在HTML5验证之前抓取提交
在HTML5验证步骤之前,有没有什么方法可以捕捉表单的submit
动作?在HTML5验证之前抓取提交
HTML
<form method='post' >
<fieldset>
<input type='email' name='foo' required />
<input type='submit' />
</fieldset>
</form>
jQuery的
$('form').submit(function() {
$('fieldset').addStyle('error');
return false;
})
但submit
一旦HTML5验证通过时才会触发。
不,HTML5的验证发生之前任何提交的事件,在所有的浏览器,所以这是不可能的,除了改变了事件的类型,比如按钮点击:
$('input[type="submit"]').on('click', function() {
$('fieldset').addClass('error');
});
+1好主意...... – ManseUK 2013-02-28 14:49:13
酷 - 看起来正是我在找什么。 – Muleskinner 2013-02-28 14:50:26
实际上你从代码中遗漏了一些东西。在函数(e)中添加“e”,并在第一行“e.preventDefault;”中添加函数,否则表单将提交。然后,当你准备好在函数'$('form')的末尾添加submit()' – CodeArtist 2013-04-17 22:32:11
当页面首次加载时,使用jquery禁用表单上的验证,这样可以防止在处理程序运行之前发生任何验证:
$(document).ready(function(){
$('form').attr('novalidate','novalidate');
})
,然后在您的onsubmit
函数结束,手动(使用checkValidity()
)
改变按钮从
<input type='submit' />
运行在每个通过javascript字段的HTML5验证到常规按钮
<input type='button' id="submit" />
然后,只需捕捉点击事件并自己提交
$('#submit').on('click', function() {
$('fieldset').addStyle('error');
// if everything is ok
$('form').submit();
})
是的,我考虑过这个问题,但因为它打破了表单的正常行为而被驳回,例如ENTER不提供默认的默认 – Muleskinner 2013-02-28 14:56:39
你需要HTML5验证吗?如果没有,你可以使用'novalidate'来禁用它。 – 2013-02-28 14:45:41