将onchange事件添加到FormHelper表单

时间:2013-03-28 21:52:31

标签: javascript cakephp html-form cakephp-2.2

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

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

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

有没有办法以CakePHP标准方式向我的复选框添加onchange事件,或者我是否必须在没有Formhelper的情况下构建复选框来执行此操作?

1 个答案:

答案 0 :(得分: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();