我有一个包含大量列表的多选项,我不允许选择只显示“全部”。
但在后台我仍然想检查是否所有人都被选中。 我看到/有一些代码片段之前做过这个,但我找不到它。我记得它正在检查未选择的选项数是否等于0,然后你知道所有的选项都被选中了。
如果可以的话,我想在一行上做这样的检查:
$("#my-multiselect:not(:selected)").length === 0
但是$("#my-multiselect:not(:selected)").length
只返回1或0,就像我想象的那样真或假。我错误地使用了:not()
吗?或者我还需要做些什么来获得准确的计数?
答案 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;
}