使用Javascript提交HTML5表单并验证其输入

Ahm*_*rsy 15 javascript forms html5

我正在编写表单并在其输入中添加html5验证属性,如"required","autofocus".我使用Javascript使用document.myForm.submit()提交表单,但它不会根据html5验证属性验证表单,因为它们不存在.

有什么建议?

pim*_*vdb 26

似乎触发click提交按钮确实有正确的效果:http://jsfiddle.net/e6Hf7/.

document.myForm.submitButton.click();
Run Code Online (Sandbox Code Playgroud)

如果您没有提交按钮,请添加一个不可见的按钮,如:

<input type="submit" style="display:none" name="submitButton">
Run Code Online (Sandbox Code Playgroud)


zut*_*nop 8

pimvdb的答案基于一个包含隐藏提交按钮的解决方法.

HTML5提供了javascript函数,无需提交按钮即可实现相同的功能.正如Tigraine所指出的,Mozilla记录了两种"形式"元素的有效性检查方法:

  • checkValidity()返回true/false并且不向最终用户显示任何内容
  • reportValidity()返回true/false并且还显示给最终用户的验证消息(就像正常的提交按钮点击一样)

<!DOCTYPE html>
<html>
<body>

<form name="testform" action="action_page.php">
E-mail: <input type="email" name="email" required><br/>
<a href="#" onclick="javascript:console.log(document.testform.reportValidity());return false;">Report validity</a><br/>
<a href="#" onclick="javascript:console.log(document.testform.checkValidity());return false;">Check validity</a><br/>
<a href="#" onclick="javascript:if(document.testform.reportValidity()){document.testform.submit();}return false;">Submit</a>
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)