【问题标题】:Use jQuery to check for number of options NOT selected in a multiselect使用 jQuery 检查多选中未选择的选项数量
【发布时间】:2015-06-18 19:00:50
【问题描述】:

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

但在后台我仍然想检查是否全部都被选中。 我之前看到/有一些sn-p的代码,但我找不到它。我记得它所做的是检查未选择的选项数量是否等于 0,然后您就知道所有选项都已选择。

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

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

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

【问题讨论】:

  • 因为你使用的是id属性,所以对多个元素使用class
  • 真的吗?但我只想检查这个特定的多选,而不是页面上的全部或只是任何一个。
  • 可能是$("#my-multiselect :not(:selected)")(注意空格)
  • 空间仍在使用 id !谢谢!
  • 不是复选框,它们是多选。

标签: jquery multi-select


【解决方案1】:

你少了一个空格:

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

因为您要选择#my-multiselect 元素内的options

【讨论】:

  • 因为第一个正确答案。谢谢!仍然让我感到困惑,因为我见过的所有示例都没有空格,所以我从未尝试过。
  • 空格意味着,例如,拥有A B,您将选择A 中的任何B。在这种情况下,$("#my-multiselect :not(:selected)") 等同于 $("#my-multiselect option:not(:selected)")
【解决方案2】:

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

要计算所有未选择的<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;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple id="my-multiselect">
  <option value="1">One</option>
  <option value="2">Two</option>
  <option value="3">Three</option>
  <option value="4">Four</option>
  <option value="5">Five</option>
</select>

<button id="calculate">Calculate</button>

<p id="output"><p>

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2014-03-28
    • 2020-09-19
    相关资源
    最近更新 更多