为什么JavaScript提交重新加载页面和通过按钮提交进行客户端页面验证
我对jquery.validate和jquery.validate.unobtrusive有奇怪的行为 若我像这样调用SubmitMVC表单,那个么页面将被重新加载,验证工作正常为什么JavaScript提交重新加载页面和通过按钮提交进行客户端页面验证,javascript,jquery,asp.net-mvc,forms,Javascript,Jquery,Asp.net Mvc,Forms,我对jquery.validate和jquery.validate.unobtrusive有奇怪的行为 若我像这样调用SubmitMVC表单,那个么页面将被重新加载,验证工作正常 <a href="#" onclick="document.getElementById('myform').submit();"> <div class="span2 btn">
<a href="#" onclick="document.getElementById('myform').submit();">
<div class="span2 btn">
<div class="span2 top10 playText">
</div>
</div>
</a>
如果提交表格
<input id="subBtn" type="image"
src="/images/free.jpg"class="main_img" />
客户端的验证工作
有什么区别?如何使其始终通过客户端工作?您必须在提交按钮上触发事件:
document.getElementById('subBtn').click();
$('#subBtn').trigger('click');
本机浏览器验证是通过单击“提交”按钮触发的,而不是通过提交表单触发的-这是两个不同的事件。您可以防止表单提交这样的值:
$("#myForm").submit(function (e) {
//Cancel the form post
e.preventDefault();
// ... Rest of your code validation
}
DOM元素(不是jQuery对象)上的方法提交表单时不调用任何附加的onsubmit
事件处理程序,因此您的验证被绕过
相反,使用提交按钮或图像会调用任何提交事件处理程序
您可以改用jQuery提交方法:
$('#myform').submit();
这将调用任何提交处理程序
注意,如果您的验证是您自己的JavaScript或jQuery验证,那么这是可以的,如果您使用的是HTML5验证,那么您必须触发submit按钮的click事件:
document.getElementById('subBtn').click();
$('#subBtn').trigger('click');
为什么这比form.submit()好?实际上,只有在单击submit按钮时才会触发验证
form.submit()
绕过此选项。您应该在答案中添加此选项;)