为什么JavaScript提交重新加载页面并通过按钮提交进行客户端页面验证

时间:2014-10-22 16:18:49

标签: javascript jquery asp.net-mvc forms

我对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" />

在客户端工作的验证

有什么区别?如何让它始终通过客户端工作?

3 个答案:

答案 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

}