覆盖html5validation

我正在使用一个简单的登录表单,有两个字段:

对于现代浏览器,会自动触发validation。

但是,如果javascript可用,我想接管html5表单validation,并自己处理所有内容。

我想自动validation’onblur’(仅受影响的字段),并且我想在点击’submit’时validation所有字段。

onblur事件工作正常,但是当按下“提交”时,不会触发标准的“提交”事件。 但是,会触发“无效”事件; 但仅适用于第一个无效事件。

告诉浏览器忽略所有与HTML5相关的validation并接管整个过程的好方法是什么?

请注意 – 即使某些浏览器可能支持INPUT元素上的novalidate属性 – HTML代码也不会validation。

根据文件,没有这样的属性。 只有FORM元素可以包含novalidate属性。

这个答案是不正确的。 请参阅willydee的回答。

很简单,只需将novalidate属性添加到您不希望浏览器validation的任何元素,如下所示:

 

由于您希望仅在JavaScript可用时取消validation,请使用JavaScript添加(使用jQuery作为简化示例)

 $('input[novalidate]').attr('novalidate', 'novalidate'); 

如果您使用jQuery的另一个选择是删除该属性。

 $("input[required],select[required],textarea[required]").removeAttr('required'); 

也许您可以使用javascript将所有“必需”属性转换为“需要数据”,因为您可以使用javascript处理它们并使用您自己的处理程序覆盖html5表单validation