0

我有一个选择下拉菜单,例如:

<select multiple="" id="search_skills" name="search_skills[]">
    <option value="all">All</option>
    <option value="1">PHP</option>
    <option value="2">JAVA</option>
    <option value="3">.NET</option>
</select>

现在,当用户首先选择“全部”时,应选择所有值。所以我想要一个点击事件。这是我正在尝试的。但它不起作用。

$(function(){ 
  $("select[name='search_skills[]']").change(function() {            
    if ( $("select[name='search_skills[]']")[0].selectedIndex === 0 ) {
        var sel_val = $("#search_skills").val();
        alert(sel_val);
        if(sel_val == 'all'){
            $("#search_skills > option").prop("selected","selected");
        }
        else if(sel_val.indexOf('all') == '-1'){
            $("#search_skills > option").removeAttr("selected");
        }
        $('#search_skills').selectpicker('refresh');
     }
  });
}); 

请帮忙。

4

3 回答 3

0

使用 jQuery道具

$('#selectall').click(function() {
    $('option').prop('selected', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select multiple="" id="search_skills" name="search_skills[]">
    <option id="selectall" value="all">All</option>
    <option value="1">PHP</option>
    <option value="2">JAVA</option>
    <option value="3">.NET</option>
</select>

于 2015-05-05T08:13:38.020 回答
0

您可以尝试使用prop()功能:

$(document).on('click', '#search_skills option[value="all"]', function() {
  var that = $(this);
  var opt = $('#search_skills > option');
  if (!that.is('selected')) {
    opt.prop('selected', true);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select multiple="" id="search_skills" name="search_skills[]">
    <option value="all">All</option>
    <option value="1">PHP</option>
    <option value="2">JAVA</option>
    <option value="3">.NET</option>
</select>

于 2015-05-05T08:13:52.567 回答
0

尝试 -

$('#search_skills option:first').on('click', function() {
var that = $(this);
  var opt = $('#search_skills > option');
  if (!that.is('selected')) {
    opt.prop('selected', true);
  }
})

演示

于 2015-05-05T08:19:42.747 回答