问题:
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表单的提交即可。
方法总是有的,多动脑,多动手,慢慢办法就来了。