【问题标题】:Form submit not posting back on ASP.NET page表单提交未在 ASP.NET 页面上回发
【发布时间】:2018-08-09 12:16:01
【问题描述】:

我在 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,但页面不会回发并提交。我一直在拔头发试图弄清楚这一点。是否有明显的原因表明它无法正常工作?我错过了什么?

【问题讨论】:

  • 你在使用更新面板吗?
  • 在哪里处理按钮的点击事件?它是一个服务器控件,因此您需要将 onclick 事件“绑定”到服务器端事件处理程序
  • @Schadensbegrenzer 该按钮在服务器端确实有一个单击处理程序,它可以执行许多其他操作。
  • @Gaurav 不,我没有使用更新面板
  • 我没有在按钮上看到事件注册。另外,你不是通过附加客户端事件注册(jquery代码sn-p)来覆盖按钮的点击注册吗?

标签: javascript jquery asp.net forms


【解决方案1】:

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;
   }
});

【讨论】:

  • 最终这样做了,但我还在按钮中添加了 UseSubmitBehavior="false" 。它现在正在工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多