使用jQuery检查多选中未选择的选项数

时间:2015-06-18 19:00:50

标签: jquery multi-select

我有一个包含大量列表的多选项,我不允许选择只显示“全部”。

但在后台我仍然想检查是否所有人都被选中。 我看到/有一些代码片段之前做过这个,但我找不到它。我记得它正在检查未选择的选项数是否等于0,然后你知道所有的选项都被选中了。

如果可以的话,我想在一行上做这样的检查:

$("#my-multiselect:not(:selected)").length === 0

但是$("#my-multiselect:not(:selected)").length只返回1或0,就像我想象的那样真或假。我错误地使用了:not()吗?或者我还需要做些什么来获得准确的计数?

2 个答案:

答案 0 :(得分:2)

你错过了一个空格:

$("#my-multiselect :not(:selected)").length === 0

因为您想在options元素中选择#my-multiselect

答案 1 :(得分:1)

您似乎正在检查<select>元素的“已选中”状态。但只有<option>元素包含的<select>元素可以是“selected” - 而不是<select>元素本身。

要计算<{1}}元素中所有未选择的<option>元素,请使用:

<select>

请参阅下面的演示:

$("select#my-multiselect option:not(:selected)").length
$(function() {

  var $button=$('button#calculate'),
      $output=$('p#output');
  
  $button.on('click', function() {
    var unselected = $("select#my-multiselect option:not(:selected)").length;
    $output.text(unselected + " options unselected.");
  });

});
select#my-multiselect {
  width:60px;
  height: 100px;
}