Yii和Javascript表单提交

时间:2014-05-15 14:31:43

标签: javascript php jquery forms yii

我正在使用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 以处理表单(特别是批准和拒绝案例)。

1 个答案:

答案 0 :(得分:1)

如果您向表单添加了隐藏的输入,则可以在提交表单之前使用jQuery修改输入值,如下所示:

$("#inputID").val('approve');

如果要通过$(this).val()将值设置为单击按钮的值,请注意可能导致IE浏览器的问题,请解释here。第二个答案(通过postpostmodern)解决了这个问题。