表单提交未在ASP.NET页上回发

时间:2018-08-09 12:16:01

标签: javascript jquery asp.net forms

我在ASP.NET中有一个带有此按钮的表单:

<asp:Button ID="btnNext"
runat="server"
CausesValidation="false"
Text="Submit Form" />

我使用jQuery Validate在此表单上进行验证,就像这样:

jQuery(function() {
    jQuery('#form1').validate({
        rules: {
            txtSerialNumber: {
                required: true
            }
        },
        messages: {
            txtSerialNumber: {
                required: "Please enter a serial number."
            }
        }
    });
});

还有更多,但所有字段都相同。我已验证此验证代码有效。

我也有一些JavaScript来调用验证码,因为它以前不起作用(由于各种原因)。

jQuery('#btnNext').on("click", function () {
    if (jQuery("#form1").valid()) {
        jQuery(this).prop('disabled', true); // prevent multiple submits
        return true;
    } else {
        return false;
    }
});

编辑:当我注释掉禁用按钮的行时,表单将正确提交。因此,似乎在页面回发之前禁用了提交按钮会导致页面不回发。

当我单击此按钮提交表单时,上面的javascript被调用,但页面未回发并提交。我一直在拉头发,试图弄清楚这个问题。有明显的原因不能正常工作吗?我想念什么?

1 个答案:

答案 0 :(得分:2)

向按钮中添加一个OnClientClick事件,这将调用验证,而不是使用jquery添加.on("click")事件处理程序。

<asp:Button ID="btnNext"
    runat="server"
    CausesValidation="false"
    Text="Submit Form"
    OnClientClick="validate()" />

javascript:

function validate () {
   if (jQuery("#form1").valid()) {
       jQuery(this).prop('disabled', true); // prevent multiple submits
       return true;
   } else {
       return false;
   }
});