我有一个充满复选框的表单,我正在尝试通过AJAX更新表单选项(因为选择了一个选项,其他选项是有限的)。我通过提交按钮进行了这项工作,但是我想在选择框的onchange上完成它。 (是的,我知道这是提交表格的一种不寻常的用法)。
我尝试将onchange添加到输入的属性数组中,但它不起作用。标签,类等其他东西都可以很好地应用,但是onchange却没有。这是一个复选框列表:
echo $this->Form->input('Sale.LocationID', array(
'label' => 'LocationID:',
'options'=>$locations,
'multiple' => 'checkbox',
'onchange'=>"this.form.submit()",
));
有没有办法以CakePHP标准方式向我的复选框添加onchange事件,或者我是否必须在没有Formhelper的情况下构建复选框来执行此操作?
答案 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();