我正在尝试找出用户是否已经在选择框中选择了一个选项(在提交表单之后),如果他没有选择。
示例:
<select>
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
(/ \用户未选择任何内容)
<select>
<option value="foo">foo</option>
<option selected="selected" value="bar">bar</option>
</select>
(/ \用户在提交表单之前选择了一个选项)。
我一直在尝试(全部使用jQuery):
$(this).attr('selected');
// returns true or false, regardless of whether the selected has explicitly been set
$(this).prop('selected');
// return 'Uncaught TypeError: undefined is not a function'
$(this).is(':selected');
// returns true or false, regardless of whether the selected has explicitly been set
if( typeof( $(this).attr('selected') ) != 'undefined' ) {
// returns true or false, regardless of whether the selected has explicitly been set
简而言之:如何检查选项元素上是否存在selected =“selected”'thing'?
答案 0 :(得分:1)
您可以使用以下语句检查是否选中了特定选项
$("select option:selected").length>0 //if that option is selected
<强>更新强>
$("select option[value = '*value goes here*']:selected").length>0 //if that option is selected
答案 1 :(得分:0)
这样的事情对你有用:
$('#mySelect').on('change',function() {
if($('#mySelect option:selected')) {
alert("selected: "+ $('#mySelect').val());
}
});
答案 2 :(得分:0)
如果您使用以下html ...
<select>
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
&#13;
...问题是默认情况下会选择第一个选项。
因此,您无法知道用户是否真的想要选择该选项,或者是否跳过它并且没有选择任何内容。
相反,建议使用以下内容:
select > .placeholder{
display: none;
}
&#13;
<select>
<option value="" class="placeholder" selected disabled>
Select an option...
</option>
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
&#13;
然后,要知道用户是否选择了一个选项,检查value
就足够了:
!!mySelect.value; // If the user hasn't chosen any option,
// `mySelect.value === ''` in vanilla-js
!!$(mySelect).val(); // If the user hasn't chosen any option,
// `$(mySelect).val() === null` in jQuery 1.8.3+
// `$(mySelect).val() === ''` in previous jQuery