关于formnovalidate的声明是否正确?

时间:2019-07-16 11:55:16

标签: javascript html attributes

  

Boolean,如果存在,它指定提交时不应验证表单数据(输入)。

您为什么要使用它?

  1. 如果将其应用于您的表单,它将允许您的JavaScript管理所有验证。
  2. 如果将其应用于您的提交输入,则可用于允许用户保留表单填写的功能,然后再继续他们离开的地方,而不必强行解决所有验证错误。

1 个答案:

答案 0 :(得分:0)

  

有关formnovalidate的声明是否正确?
  一个布尔值(如果存在),它指定提交时不应验证表单数据(输入)。

是的,陈述是正确的。基本上就是the documantation says。值得一提的是,该HTML5属性可以应用于<button><input type="submit">,并且它覆盖了表单的默认行为,该行为在提交之前验证所有输入。表单的默认行为也可以使用另一个HTML5属性-<form>元素的novalidate覆盖。

  

如果将其应用于您的表单,它将允许您的JavaScript管理所有验证。

不要将属性formnovalidate应用于<form>元素。属性novalidate用于此目的-参见上文。如果将novalidate应用于<form>formnovalidate应用于<button>导致表单提交,则它实际上将禁用浏览器对表单输入字段的验证。无论是否启用浏览器验证,您仍然可以使用某种客户端(JavaScript)验证。禁用验证允许用户将表单提交到服务器,您也可以在服务器上通过后端验证表单数据。

  

如果将其应用于您的提交输入,则可用于允许用户保留表单填写的功能,然后再继续他们离开的地方,而不必强行解决所有验证错误。

是的,但是请注意,您仍然必须自己使用本地或服务器端存储来存储和恢复输入值。

在这里查看novalidateformnovalidate的组合在现实生活中如何工作:

form + form {
  margin-top: 2em;
}

fieldset {
  display: inline-block;
}
<form onsubmit="window.alert('submitted'); return false;">
  <fieldset>
    <legend>This form validates input on submit</legend>
    <input type="text" name="some-text" placeholder="enter some non-blank text" required>
    <input type="submit" value="Save" />
    <input type="submit" value="Save without validation" formnovalidate />
  </fieldset>
</form>

<form novalidate onsubmit="window.alert('submitted'); return false;">
  <fieldset>
    <legend>This form never validates input on submit</legend>
    <input type="text" name="some-text" placeholder="enter some non-blank text" required>
    <input type="submit" value="Save" />
    <input type="submit" value="Save without validation" formnovalidate />
  </fieldset>
</form>