如何计算未禁用且显示无属性的选择标记中的选项数

时间:2016-02-19 16:00:37

标签: javascript jquery

我有一个包含选项的select标签,在某些时候,某些选项被禁用和隐藏。我想得到选项的大小或长度。

我试过

$("#input option :enabled").size();

并且:

x=$("#input option").length
y=$("#input option :disabled").length;
count = x-y;

任何人都可以请帮助

3 个答案:

答案 0 :(得分:1)

使用此

$("#input option:not(:hidden):not(:disabled)").length

答案 1 :(得分:1)

使用简单的选择器无法做到这一点。



length = $("#input option:not(:disabled)").filter(function(){
  return $(this).css('display') != 'none';
}).length;
console.log(length);
document.getElementById('result').innerHTML = length;

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select id="input">
  <option disabled="true">1</option>
  <option disabled="true">2</option>
  <option disabled="true">3</option>
  <option style="display:none;">4</option>
  <option>5</option>
  <option>6</option>
  <option>7</option>
  <option>8</option>
  <option>9</option>
  <option>0</option>
</select>
<div id="result"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您可以使用jQuery .filter() 功能,并使用两个条件,首先检查未禁用的选项,然后检查这些选项是display=none,请查看下面的示例

希望这有帮助。

var options_length = $("#input option").filter(function() { 
    return $(this).css("display") == "none" && $(this).not(':disabled')
}).length;

alert(options_length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="select" id='input'>
  <option value="value1">Valeur 1</option> 
  <option value="value2" selected>Valeur 2</option>
  <option value="value3" style='display:none'>Valeur 3</option>
  <option value="value4" disabled>Valeur 4</option>
  <option value="value5" disabled>Valeur 5</option>
  <option value="value6">Valeur 6</option>
  <option value="value7" style='display:none'>Valeur 7</option>
</select>