繁体   English   中英

jQuery:如何检查是否在选择框中明确选择了 NO 选项

[英]jQuery : How to check if NO option was explicitly selected in a select box

是否可以检测在选择框中是否没有明确选择任何选项?

我试过这些方法,但没有一个有效:

<select id="mySelect">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

试验 1:

alert($('#select option:selected').length); // returns 1

试验 2:

alert($('#select option[selected=selected]').length); // returns 1

试验 3:

alert($('#select option:selected').attr('selected')); // returns 'selected'

任何想法SO人?

尝试这个:

<select id="mySelect">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select><input type="button" id="btncheck" value="check"/>

使用这个JS:

$('#btncheck').click(function(){
     if ($("#mySelect ")[0].selectedIndex <= 0) {
                alert("Not selected");
            }
    else
        alert("Selected");
});

它会检查您的下拉菜单是否被选中。

试试这个小提琴: http : //jsfiddle.net/aPYyt/

希望有帮助!

PS:您必须将第一个值设为默认值。

这是一个普通的select 元素的工作原理:如果没有其他选项设置了selected属性,则选择第一个选项。 最简单的解决方法是添加一个选项作为第一个选项,如下所示:

<select id="mySelect">
  <option value="">-- select an item --</option>
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

在 jQuery 中,您可以测试以下条件之一:

$("#mySelect").val() === "";
$("#mySelect option:selected").index() == 0;
$("#mySelect option:first:selected").length != 0;

选择框总是有一个值。 如果您不手动更改默认值,您仍然有一个值。 为了检查显式更改,如您所说,您可以监视change

$('#select').change(function() { $(this).data('changed', true); });

那么你的条件是:

if(!!$('#select').data('changed')) { ... }

实现类似的更常见的方法是在顶部插入一个占位符值:

<option value="0">Please select one item</option>

...并测试

$('#select').val() == '0'

如果您需要找出 select 是否已从其原始值更改,即上面的测试,但要确保用户没有切换回默认值,您可以简单地在页面加载时存储原始值:

$('#select').data('original-value', $('#select').val());

并检查

$('#select').val() != $('#select').data('original-value');
var $inputs_select_options = $('option:selected');      

// remove empty(first option as default , value=="" ) options:
$inputs_select_options = $inputs_select_options.filter(function() {
    return this.value.length; //check by length value
});

默认情况下,索引 0 上的任何选项都被浏览器视为已选中。 问题的解决方案是在索引 0 处插入一个虚拟选项,在提交表单之前,您可以使用类似的方法验证它

if($("#selectBox option").index("option:selected")>0) $("#myForm").submit();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM