2014-09-28 78 views
2

有多个选择元素:长度的选择多的选择的选项始终返回1

<select id="secta_code" name="secta_code[]" multiple="multiple" size="10"></select> 

$(document).ready(function() { 

    $('#secta_code').on('change',function() { 
     alert("nb = "+$(this,"option:selected").length); 
    }); 

}); 

如何动态地赶上的处理程序中选择选项的数量?

回答

3

替代你可以使用这个:

$('#secta_code').on('change', function() { 
 
     alert("nb = " + $(":selected", this).length); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="secta_code" name="secta_code[]" multiple="multiple" size="10"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
    <option value="4">4</option> 
 
    <option value="5">5</option> 
 
</select>

jQuery构造函数接受名为context的第二个参数,其中 可用于覆盖选择的上下文。

1

尝试使用find方法来代替:

$(document).ready(function() { 
 

 
    $('#secta_code').on('change',function() { 
 
     alert("nb = "+$(this).find("option:selected").length); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="secta_code" name="secta_code[]" multiple="multiple" size="10"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
    <option value="4">4</option> 
 
    <option value="5">5</option> 
 
</select>

+0

这一次,我不得不使用'find'呢:) – pheromix 2014-09-28 14:02:35

0

试试这个: -

$(document).ready(function() { 
    $('#secta_code').on('change',function() { 
    alert("nb = "+ $('#secta_code option:selected').length); 
    }); 
}); 

DEMO