我正在使用以下html来获取默认选中的禁用选项“选择城镇”作为一种占位符。
<select name="town">
<option selected disabled value="xx">-- Select a town --</option>
<option value="xx">Paris</option>
<option value="xx">London</option>
<option value="xx">Budapest</option>
</select>
现在,我想测试用户是否选择了任何选项,或者它是否仍然为空。
我认为使用jquery($('select[name="town"]').val();
)测试选择值将返回值“ xx”。
取而代之的是,.val()
返回null。
我在文档(http://api.jquery.com/val/)中找不到这种行为的踪迹。
选择禁用的选项后,我可以依靠.val()
返回null吗?它在任何地方都有记录吗?
还是我必须同时检查value
属性的空值和实际值(在上面的示例中为“ xx”)?
答案 0 :(得分:0)
您无法选择禁用的选项,因此该值(无论您将其设置为什么)都将始终返回null
。这是预期的行为。
虽然文档未指定禁用选项,但确实会显示
如果未选择任何选项,则返回一个空数组;在jQuery 3.0之前,它返回null
也应该禁用选项。您仍然可以进行测试!
我们可以使用if语句检查该值是否返回null
。如果不是 null
if ($('select[name="town"]').val() != null) {
console.log('Option selected.');
}
如果要测试其他选项,可以将!= null
替换为== value
。
本质上,您可以将它用作if语句,else if语句,else语句的倍数。
或者,您可以通过以下方式获取禁用的选定选项的值:
$('select[name="town"] option[disabled]:selected').val();
感谢SO answer。