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

标签 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" />

客户端验证

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

最佳答案

HTMLFormElement.submit() DOM 元素(不是 jQuery 对象)上的方法提交表单而不调用任何附加的 onsubmit 事件处理程序,因此您的验证被绕过。

相反,使用提交按钮或图像会调用任何提交事件处理程序。

您可以改用 jQuery 提交方法:

$('#myform').submit();

这将调用任何提交处理程序。

请注意,如果您的验证是您自己的 JavaScript 或 jQuery 验证那么这没问题,如果您使用的是 HTML5 验证那么您将必须触发提交按钮的点击事件:

$('#subBtn').trigger('click');

关于javascript - 为什么 JavaScript 提交重新加载页面并通过按钮提交进行客户端页面验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512207/

相关文章:

javascript - 在 React 中,子组件如何调用在其父组件上下文中执行的函数?

javascript - 比较两个对象数组并合并

javascript - 将 div 排列成圆形并向外设置动画半径

javascript - 切换菜单不会在导航单击时关闭

asp.net - jQuery 调用时 RedirectToAction 不起作用?

javascript - 向下滚动时加载 iframe

javascript - 具有 jQuery 函数范围问题的 Angular 2

asp.net-mvc - MVCContrib 寻呼机图像

asp.net-mvc - 搜索数据库 - ASP.NET MVC C#

asp.net-mvc - 如何更改 .NET CORE 中的默认 ASP.NET Identity 表名称?