我正在使用Yii作为我网站的PHP框架。另外,我的网站使用了一些js / jquery,比如一个jQuery UI Dialog小部件(除了那些对话框,其余的代码是纯正常的html表单组件和事件处理程序的jQuery代码)。
在Yii方面,我使用CForms to build my forms from specifications file。
当我测试表单是否已提交时,我必须为某个按钮执行此操作。这不仅是强迫的,而且我也利用它。
if ($myCFormInstance->submitted('approve')) {
//process approval code
} else if ($myCFormInstance->submitted('reject')) {
//process rejection code
}
我遇到的实际问题有点概念性,因为 - 很遗憾 - 我知道我的代码发生了什么,并且 - 幸运的是 - 知道问题根:
在我的代码的某处,我拦截了提交按钮的点击事件:
$(function(){
$(".critical-action").click(function(e){
var form = $(this).closest("form");
e.preventDefault();
e.stopImmediatePropagation();
confirmDialog("¿Continuar?", "#critical-action-dialog", function(){
form.submit();
});
});
});
假设.critical-action分类元素始终是表单中的提交按钮。
代码的意图:取消表单提交,并仅在用户 - 在对话框中单击“是,继续”(即确认操作)按钮时执行。
此代码按预期工作,并且在javascript级别没有问题但是这里是我的问题 - 在执行form.submit()时,该按钮不是作为表单的一部分发送的 。这很明显:我发送表单时没有指定任何按钮。在批准和拒绝的情况下,有两个按钮,示例解释了自己:如果form.submit()
调用可以发送他们的按钮¿他们应该发送哪些?。
问题:所以,由于form.submit()
没有发送任何按钮,但我实际上需要按钮¿我如何发送表格“与相应的按钮“-ie我选择指定的按钮,它应该对应于点击处理函数上下文中的this
- 通过javascript自动? Yii要识别按钮 NEEDS 以处理表单(特别是批准和拒绝案例)。
答案 0 :(得分:1)
如果您向表单添加了隐藏的输入,则可以在提交表单之前使用jQuery修改输入值,如下所示:
$("#inputID").val('approve');
如果要通过$(this).val()
将值设置为单击按钮的值,请注意可能导致IE浏览器的问题,请解释here。第二个答案(通过postpostmodern)解决了这个问题。