Jquery Validation无法在Chrome浏览器下进行form.submit()表单提交的解决方法
2010-04-09 10:04 Fred-Xu 阅读(3501) 评论(2) 编辑 收藏 举报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表单的提交,同样可以达到我们想要的效果。