Javascript CakePHP动态填充复选框
目前我正在使用CakePHP 2.6,我有2个表和多对多联接表:Javascript CakePHP动态填充复选框,javascript,cakephp,checkbox,Javascript,Cakephp,Checkbox,目前我正在使用CakePHP 2.6,我有2个表和多对多联接表: CREATE TABLE IF NOT EXISTS `iam-test_db`.`accesses` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `location_id` INT UNSIGNED NOT NULL, `facility_id` INT UNSIGNED NOT NULL, `department_id` INT UNSIGNED NOT NULL
CREATE TABLE IF NOT EXISTS `iam-test_db`.`accesses` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`location_id` INT UNSIGNED NOT NULL,
`facility_id` INT UNSIGNED NOT NULL,
`department_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
CREATE TABLE IF NOT EXISTS `iam-test_db`.`systems` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`facility_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(60) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_systems_facilities`
FOREIGN KEY (`facility_id`)
CREATE TABLE IF NOT EXISTS `iam-test_db`.`accesses_systems` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`access_id` INT UNSIGNED NOT NULL,
`system_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_accesses_systems_accesses`
FOREIGN KEY (`access_id`)
CONSTRAINT `fk_accesses_systems_systems`
FOREIGN KEY (`system_id`)
我已经成功地为设施和部门创建了相关的填充下拉列表,目前在我的添加表单中将所有系统作为复选框列出
My AccessController.php
public function add() {
if ($this->request->is('post')) {
$this->Access->create();
if ($this->Access->save($this->request->data)) {
$this->Session->setFlash(__('The access has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The access could not be saved. Please, try again.'));
}
}
$locations = $this->Access->Location->find('list');
$systems = $this->Access->System->find('list');
$this->set(compact('locations', 'facilities', 'departments', 'systems'));
}
在我的access/add.ctp中,我包含了这行复选框
echo $this->Form->input('System',array(
'label' => __('Systems',true),
'id' => 'AccessSystem',
'div' => 'checkbox',
'type' => 'select',
'multiple' => 'checkbox',
'options' => $systems,
));
位置/设施/部门下拉列表由JsHelper/jquery填充
现在我希望复选框也依赖于我选择的设施。但是我不知道怎么做。我想我必须使用javascript/jquery
我正在考虑显示一个按钮,然后单击一个弹出窗口,显示设备相关系统。这是正确的方法还是你有更好的想法
谢谢:-)我不确定我是否理解您的问题,因此我正在说明问题所在。我相信您有许多系统,您希望根据设备id自动选中/取消选中它们。您可以为它们创建一个部分,并在其中包含这些复选框。节可以有两种状态,折叠和展开,折叠时可以有+图标,展开时可以有-图标。单击+图标将展开该部分,单击-图标将折叠该部分。此外,还可以将类添加到复选框中。假设您添加了一类
'system-checkbox-'+id
,其中id
是设施的id。另外,假设复选框包含在div
中,id为my section
。然后,根据设施的id选中和取消选中复选框将如下所示:
$("#my-section input:not(.system-checkbox-" + id + ")").prop("checked", false);
$("#my-section input.system-checkbox-" + id).prop("checked", false);
如果我误解了这个问题,请告诉我。很抱歉,您误解了我的问题:p在我的access/add.ctp表单中,列出的所有系统都未选中,因此用户可以检查所需的系统。但我只想列出属于所选设施的系统。我将更新我的代码示例。然后可以使用.hide()和.show()代替.prop()。相同的逻辑,但不包括检查和取消检查。你是在隐藏和展示。