0

我有一个充满复选框的表单,我正在尝试通过 AJAX 更新表单选项(因为选择了一个选项,其他选项受到限制)。我通过提交按钮完成了这项工作,但我想为选择框完成 onchange 。(是的,我知道提交表单是一种不寻常的用法)。

我尝试将 onchange 添加到输入的属性数组,但它不起作用。标签,类等其他东西都可以很好地应用,但 onchange 没有。这是复选框列表之一:

echo $this->Form->input('Sale.LocationID', array(
        'label' => 'LocationID:',
        'options'=>$locations,
        'multiple' => 'checkbox',
        'onchange'=>"this.form.submit()",
        ));

有没有办法以 CakePHP 标准方式向我的复选框添加 onchange 事件,或者我必须在没有 Formhelper 的情况下构建复选框来做到这一点?

4

1 回答 1

1

使用内联事件处理效率不是很高,您是否考虑过使用 jQuery 和事件委托?

在视图文件的末尾;

// Using 'heredoc' here so we don't have to escape quotes
$script = <<< JS

    // this will handle click events on any checkbox on the page
    $(document).on("click", "input[type='checkbox']", function(){
        // or AJAX post here
        this.form.submit();
    });
JS;  // note: must be at the start of the line, no space before JS

// Append the script to the buffer
$this->Js->buffer($script);

就在你的布局内部之前(例如default.ctp)

// output the JavaScript buffer
echo $this->Js->writeBuffer();
于 2013-03-28T23:16:50.097 回答