选择所需的验证不适用于表单

时间:2018-08-08 11:15:17

标签: html validation html-select required

“必需”验证适用于表单

<!DOCTYPE html>
<html>
<body>
<form action=''>
<select required>
  <option value="">None</option>
  <option value="volvo">Volvo</option>
  <option value="saab" >Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
<input type="submit">
</form>
</body>
</html>

但是如果我将具有空值的选项移到列表下方,则不适用于同一表格。

<!DOCTYPE html>
<html>
<body>
<form action=''>
<select required>
  <option value="volvo">Volvo</option>
  <option value="saab" >Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
  <option value="">None</option>
</select>
<input type="submit">
</form>
</body>
</html>

为什么? 选择元素验证的工作原理如何?

引用以下内容:https://www.w3schools.com/tags/att_select_required.asp

2 个答案:

答案 0 :(得分:3)

以下来自w3 docs

  

必填属性是布尔属性。指定时,   用户将需要在提交表单之前选择一个值。

     

...

     

如果select元素的第一个option元素的值   选项列表(如果有)是空字符串

     

...

这意味着必填属性仅在第一个元素的值为空时有效

答案 1 :(得分:0)

Select2不是问题,而是浏览器使用select标记的方式。默认情况下,浏览器会选择第一个选项。 因此,在第一种情况下,选择了“无”选项,由于第一个选项值为null,因此您的验证会捕获错误。 在第二种情况下,第一个选项不为null。因此,在这种情况下没有验证错误。

要更正它,请添加一个带有空值的空选项并将属性设置为selected disabled

演示:https://jsfiddle.net/rLmztr2d/2909/

HTML:

<form>
  <select required id="example">
  <option disabled selected></option>
  <option value="volvo">Volvo</option>
  <option value="saab" >Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
  <option value="">None</option>
</select>
  <input type="submit">
</form>

JS:

    $('#example').select2();