ajax - 如何在通过 Ajax 提交之前在表单上使用浏览器验证?

标签 ajax forms validation browser

使用具有新类型(电子邮件、url 等)的 HTML5 表单,我已将提交事件与 JS 函数绑定(bind)。

问题是浏览器首先调用这个函数,然后调用它的验证系统,但是只有在提交函数没有返回 false 的情况下

或者,我执行 Ajax 请求和该函数中的所有工作,这意味着我总是返回 false。

如何在提交 js 函数调用之前执行浏览器验证?

感谢您的帮助。

最佳答案

根据规范,浏览器应首先验证表单,然后,如果表单有效,则应触发提交事件。这意味着,您应该能够在提交事件中执行 Ajax 提交。

目前 Opera 会先触发提交事件,然后再进行验证。您可以使用 checkValidity 方法简单地在提交监听器中手动调用验证:

$(form).bind('submit', function(){
    if(!this.checkValidity || this.checkValidity()){
        //do ajax and return false
    }
});

注意:这也会使这些浏览器中的无效事件加倍。如果你不使用它们,一切都应该没问题。如果你想使用它们而不想让它们加倍,你可以使用 webshims lib ,它修复了不同浏览器中的这个问题和其他问题。

关于ajax - 如何在通过 Ajax 提交之前在表单上使用浏览器验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405594/

相关文章:

javascript - 在打开 alert() 时创建异步 AJAX

jquery .ajax 在处理时更新数据(在成功或完成之前)

javascript - 如何通过AJAX提交后显示模态表单

forms - 表单提交按钮在 Bootstrap 模式窗口中不起作用

php - 新主机 - 权限问题?

jquery - 如何使用 MVC ajax 和 PartialViews 同时维护 ModelState 错误

php - 表单和 PHP 在一个文件中

javascript - 如何根据多个框中的选择启用/禁用复选框

.net - WPF 验证装饰器 - 仅显示控件之前是否保持焦点

php - 处理 PHP DateTime 中格式正确但无效的日期