触发JQuery事件后不会触发Codebehind OnClick事件

我在我的表单上的几个字段上使用html5约束validation,例如:

  

我想在点击时通过CSS和JQuery禁用提交按钮,但仅在validation通过后。 我试图像这样挂钩表单提交事件:

  var $form = $('#form1'); var $submitButton = $('#'); $form.submit(function () { $submitButton.prop('disabled', true); })  

在validation后成功禁用按钮,会调用回发,但不会触发我的btnSubmit_click事件。

当html5约束validation通过时,我如何通过javacript / jquery确定所以我可以执行一个禁用按钮但仍允许我的btnSubmit_click事件触发的jquery函数?

更新:我使用简单的JQuery 2.0.3

在某些情况下,同时触发Codebehind事件和JQuery事件是一个常见问题。 你可以使用一些技巧来克服这个问题,但我使用这个作为一个肮脏的解决方案,也许有一些更清洁的方法。

你可以让JQuery form.submit事件在第一次正常启动,但是当你点击Submit Button时,在按钮上添加一个“DontFireJQuery”类,在设置按钮后禁用它,它会自动再次使用:

 __doPostBack("<%= btnSubmit.UniqueID %>", ""); 

在下一次触发时,按钮具有“DontFireJQuery”类,JQuery跳过它,因此触发了Codebehind OnClick事件。

  

在CodeBehind中:

 Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click System.Threading.Thread.Sleep(1000) lblMsg.Text = "OK" End Sub 

(要将VB转换为C#,您可以根据需要使用此在线工具: http : //codeconverter.sharpdevelop.net/SnippetConverter.aspx )

这一行:

 System.Threading.Thread.Sleep(1000) 

用于测试,为了显示按钮立即设置为禁用,1秒后,lblMsg中将显示“OK”消息。 如您所知,在每次回发后,当显示OK消息时,JQuery应用的更改将消失,按钮将再次设置为enable。 如果你想永久地将按钮设置为禁用,你可以改变后面的代码,如下所示:

 Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click System.Threading.Thread.Sleep(1000) btnSubmit.Enabled = False lblMsg.Text = "OK" End Sub 

此代码的编写方式可以在UpdatePanel中使用,也没有任何问题。