提交时绕过HTML"required"属性

Hor*_*ter 24 html javascript jquery requiredfieldvalidator form-submit

required在提交表格之前用于第一次检查.

<form action="myform.php">
  Foo: <input type="text" name="someField" required="required">
  <input type="submit" value="submit">
  <input type="submit" value="ignore">
</form>
Run Code Online (Sandbox Code Playgroud)

问题是,我有一个"忽略"按钮,它也提交表单,然后后端逻辑在DB中设置正确的状态.在这种情况下(忽略)不需要验证(因为不需要填写字段"Foo").

处理这两种情况的最佳方法是什么?

  1. 我知道我可以放弃"必需"并在其他地方进行验证(后端/ JavaScript).我正在寻找一种方法来保持"必需".
  2. 我可以使用一些Js onclick作为忽略按钮场景,并在发送表单之前删除该属性(/sf/answers/976605031/).

但实际上我正在寻找更聪明的东西....

---编辑---

是的,必填属性HTML5的副本

Ber*_*rgi 75

没有JavaScript,不需要第二种形式,验证可以保留:

正是这种情况下,使用HTML5规范设计了formnovalidate属性为提交元素(如<input type=submit>),作为一个表单提交的属性:

formnovalidate属性可用于生成不触发约束验证的提交按钮.

所以简单地说

<form action="myform.php">
  Foo: <input type="text" name="someField" required>
  <input type="submit" value="submit">
  <input type="submit" value="ignore" formnovalidate>
</form>
Run Code Online (Sandbox Code Playgroud)


ish*_*ood 5

你的#2 是一种常见的方法。就像是:

$('input[value="ignore"]').click(function() {
    $(this).siblings('input[type="text"]').removeAttr('required');
});
Run Code Online (Sandbox Code Playgroud)

可能必须使用 mousedown 来击败提交。

  • 如果要使用 JavaScript,你最好这样做 `.prop("required", false)` (4认同)