如何检查用户是否从<select>
HTML5的字段中选择了某些内容?
我看到<select>
不支持新required
属性...那我必须使用 JavaScript 吗?或者有什么我想念的吗?:/
如何检查用户是否从<select>
HTML5的字段中选择了某些内容?
我看到<select>
不支持新required
属性...那我必须使用 JavaScript 吗?或者有什么我想念的吗?:/
强制:将第一个值设为空 - 需要对空值进行处理
先决条件:正确的 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 元素),
那么该选项是选择元素的占位符标签选项。
根据规范,该<select>
元素确实支持该required
属性:
哪个浏览器不尊重这一点?
(当然,无论如何您都必须在服务器上进行验证,因为您不能保证用户将启用 JavaScript。)
是的,它正在工作:
<select name="somename" required>
<option value="">Please select</option>
<option value="one">One</option>
</select>
您必须将第一个选项保留为空白。
selected
默认情况下,您可以使用option 元素的属性来选择一个选项。您可以使用required
select 元素的属性来确保用户选择某些内容。
在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>
<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>