我有一个带有多个提交按钮的表单:
<?php if($is_admin){
echo $this->Form->submit(__('Direct Assign'), ['id' => 'DAbtn', 'name' => 'btn', 'class' => 'button']);
echo $this->Form->button(__('Direct Assign & New Task From Copy'), ['id' => 'DANTbtn', 'name' => 'btn', 'class' => 'button']);} ?>
<?= $this->Form->button(__('Save as pending'), ['id' => 'SPbtn', 'name' => 'btn', 'class' => 'button']) ?>
<?= $this->Form->button(__('Save as pending & New Task From Copy'), ['id' => 'SPNTbtn', 'name' => 'btn', 'class' => 'button']) ?>
<?= $this->Form->end() ?>
因此,在控制器中,我可以检查单击了哪个按钮:
$this->request->getData('btn')
但是在我为这些按钮添加了javascript
之后,它停止了在Post变量中包含'btn'
。
//Don't allow multiple submit, disable submit button after submission of the form
$( function() {
$("#newTaskForm").submit( function() {
$(".button").attr("disabled", true);
return true;
});
});
所以我不得不删除js代码。可以解决这个问题吗?
答案 0 :(得分:3)
这就是HTML的工作方式,禁用元素的值未发送。 如果要防止多次提交,请使用只读属性而不是禁用属性。
$(function() {
$("#newTaskForm").submit( function() {
$(".button").attr("readonly", true);
return true;
});
});
或放置任何装载程序以避免多次发送