Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CakePHP动态填充复选框_Javascript_Cakephp_Checkbox - Fatal编程技术网

Javascript CakePHP动态填充复选框

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

目前我正在使用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,
  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()。相同的逻辑,但不包括检查和取消检查。你是在隐藏和展示。