我可以将 required 属性应用到 HTML5 中的 <select> 字段吗?

IT技术 javascript html select required
2021-01-11 19:47:30

如何检查用户是否从<select>HTML5字段中选择了某些内容

我看到<select>不支持新required属性...那我必须使用 JavaScript 吗?或者有什么我想念的吗?:/

6个回答

强制:将第一个值设为空 - 需要对空值进行处理

先决条件:正确的 html5 DOCTYPE 和命名输入字段

<select name="somename" required>
<option value="">Please select</option>
<option value="one">One</option>
</select>

根据文档(列表和粗体是我的)

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

如果一个选择元素

  • 指定了必需的属性,
  • 没有指定多个属性,
  • 并且显示大小为 1(不要有 SIZE=2 或更多 - 如果不需要,请省略它);
  • 如果 select 元素的选项列表(如果有)中第一个 option 元素的值是空字符串(即作为value=""),
  • 并且那个 option 元素的父节点是 select 元素(而不是 optgroup 元素),

那么该选项是选择元素的占位符标签选项。

另外,一旦选择了非选项,用户就无法选择:<option selected="selected" disabled="disabled" value="">请选择</option>
2021-03-15 19:47:30
这没有意义......而且它在几个浏览器上都不起作用
2021-03-31 19:47:30
@CoolAJ86 适用于 Chrome 23、Firefox 16 和 IE 10。
2021-04-07 19:47:30
我看到 2 个反对票。如果您想否决此问题,评论为什么
2021-04-07 19:47:30
文档的释义非常有帮助;谢谢
2021-04-07 19:47:30

根据规范,<select>元素确实支持该required属性:

哪个浏览器不尊重这一点?

(当然,无论如何您都必须在服务器上进行验证,因为您不能保证用户将启用 JavaScript。)

@PaulD.Waite 我们还能不能保证用户会启用 Javascript?我现在只从事 Web 开发大约 2 年,我从来没有遇到过这个问题。
2021-03-13 19:47:30
@user137717:是网络。你不能保证什么。当然,你可以决定它不值得迎合。
2021-03-31 19:47:30
我确定他只需要第一个条目上的 value="" - 如果没有 value 属性或所有选项上的值,则所需的选项将无法触发,因为 select 返回实际值
2021-04-04 19:47:30
@mplungjan:明白了- 很明显。
2021-04-10 19:47:30

是的,它正在工作:

<select name="somename" required>
     <option value="">Please select</option>
     <option value="one">One</option>
</select>

您必须将第一个选项保留为空白。

selected默认情况下,您可以使用option 元素属性来选择一个选项。您可以使用requiredselect 元素属性来确保用户选择某些内容。

在Javascript中,您可以通过检查selectedIndex属性来获取所选选项的索引,也可以通过检查value属性来获取所选选项的值。

根据 HTML5 规范,selectedIndex“如果有,则返回第一个选定项目的索引,如果没有选定项目,则返回 -1。如果有,则value返回第一个选定项目的值,如果有,则返回空字符串没有选择的项目。”所以如果 selectedIndex = -1,那么你就知道他们没有选择任何东西。

<button type="button" onclick="displaySelection()">What did I pick?</button>
<script>
    function displaySelection()
    {
        var mySelect = document.getElementById("someSelectElement");
        var mySelection = mySelect.selectedIndex;
        alert(mySelection);
    }
</script>
@Apostle - 请停止尝试通过编辑更改此答案。如果您认为这是不正确的,请随时留下您自己的答案。
2021-03-15 19:47:30
@BradLarson 起初我不太明白:代码不是这个问题中问题完整解决方案,或者是这个答案最后一段的解释性示例。在这种情况下可能是第二个。我认为最好将此代码组织为片段并显示结果-1抱歉,我没有先在评论中说明。
2021-04-10 19:47:30
<form action="">

<select required>

  <option selected disabled value="">choose</option>
  <option value="red">red</option>
  <option value="yellow">yellow</option>
  <option value="green">green</option>
  <option value="grey">grey</option>

</select>
<input type="submit">
</form>
请在您的答案中添加一些解释,以便其他人可以从中学习
2021-03-17 19:47:30
这个答案只是重复了前面的例子,没有额外的解释。
2021-03-29 19:47:30