Javascript 将onchange事件添加到FormHelper窗体

Javascript 将onchange事件添加到FormHelper窗体,javascript,cakephp,forms,cakephp-2.2,Javascript,Cakephp,Forms,Cakephp 2.2,我有一个充满复选框的表单,我正在尝试通过AJAX更新表单选项(因为选择了一个选项,所以其他选择是有限的)。我通过提交按钮完成了这项工作,但我想在更改选择框后完成。(是的,我知道提交表格是一种不寻常的用法) 我尝试将onchange添加到输入的属性数组中,但不起作用。标签、类等其他东西都可以很好地应用,但onchange不能。以下是其中一个复选框列表: echo $this->Form->input('Sale.LocationID', array( 'label' =

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

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

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

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

使用内联事件处理不是很有效,您考虑过使用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);

你确定不是吗?我刚刚在我的应用程序中尝试了你的代码,它添加了onchange代码。(我在2.3.1中,但我不相信这会影响任何事情)@Dave onchange在HTML中的什么地方结束的?我没有看到从父div到输入标签的任何地方,也没有看到它。实际上,这是一个好得多的主意,不知道为什么我没有想到它…我已经在其他表单上这样做了;这是一个不同的函数吗?您是如何实现AJAX提交的?您需要在click处理程序中执行AJAX提交,或者确保取消“常规”表单提交,并在steadNevermind中执行AJAX提交,找到我需要使用的函数。我太习惯Cake的Js->Submit函数了,我忘了自己做函数。
// output the JavaScript buffer
echo $this->Js->writeBuffer();