Jquery Validation插件无法在Chrome浏览器中form.submit()的解决方法

发布时间:2020-05-22编辑:脚本学堂
本文介绍下,Jquery Validation插件,不能在Chrome浏览器下进行form.submit()提交的解决方法。有需要的朋友,参考下吧。

问题:
jquery Validation验证插件中的form.submit()方法,在Chrome浏览器中提交Form无效。

解决方法:
将 form.submit() 修改为 __doPostBack('Button3','');。

例如:
 

复制代码 代码示例:
$("#<%=Button3.ClientID %>").click(function() {
//init validate
$("#form1").validate({
   submitHandler: function(form) {
   $(form).find("#<%=Button3.ClientID %>").attr("disabled",
        true).attr("value", $("#<%=Button3.ClientID %>").val() + "...");
   //form.submit();
   //将原有的form.submit()改为下面代码
        __doPostBack('Button3', '');
   },
   rules: {
     Text1: {
     required: true
}
}
}
});

备注:  
上面的Button3按钮是asp.net Button控件,点击会进行提交表单执行服务器端事件。
<asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" />

而asp.net(带有服务器端form)的页面会在客户端自动生成如下的代码:
 

复制代码 代码示例:
<script type="text/javascript">...
<!--
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>

说明:
其中eventTarget 和eventArgument,是两个就是用来存储在回送的时候获取是哪个控件触发了回送,并且带了什么参数。
总之,调用__doPostBack函数可以实现客户端控件调用服务器端控件的响应。
或者是在javascript里面调用.net的服务器控件事件。

因此,form.submit()无效时,修改为__doPostBack('Button3','')以进行Form表单的提交即可。

方法总是有的,多动脑,多动手,慢慢办法就来了。