我对jquery.validate和jquery.validate.unobtrusive有奇怪的行为
如果我调用提交mvc表单,则重新加载页面并验证工作
<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" />
在客户端工作的验证
有什么区别?如何让它始终通过客户端工作?
答案 0 :(得分:2)
DOM元素(不是jQuery对象)上的HTMLFormElement.submit()
方法提交表单而不调用任何附加的onsubmit
事件处理程序,因此绕过了验证。
相反,使用提交按钮或图像会调用任何提交事件处理程序。
您可以改用jQuery submit方法:
$('#myform').submit();
这将调用任何提交处理程序。
注意,如果您的验证是您自己的JavaScript或jQuery验证,那么这没关系,如果您使用的是HTML5验证,则必须触发提交按钮的click事件:
$('#subBtn').trigger('click');
答案 1 :(得分:0)
您必须在提交按钮上触发事件:
document.getElementById('subBtn').click();
通过点击提交按钮触发本机浏览器验证,而不是通过提交表单 - 这是两个不同的事件。
答案 2 :(得分:0)
您可以阻止表单提交类似的值:
$("#myForm").submit(function (e) {
//Cancel the form post
e.preventDefault();
// ... Rest of your code validation
}