5

我用过引导选择

现在,当我单击一个选项时,它应该被选中,因为它工作正常,但是当我单击同一个选项时,应该同时取消选择它clickEnterkeypress 事件它是如何在多选上工作的,我只想以相同的方式进行单选选择。

我已经尝试使用以下代码在单击事件上进行选择和取消选择,它工作正常,但是当我尝试使用键盘进行操作时,enter key它甚至没有被选中。

任何帮助表示赞赏:-)

$('.selectpicker').selectpicker({
    liveSearch:true,
    showTick:true
});

$(document).on('click', '.dropdown-menu li', function(event){ 
    if($(this).hasClass('active')){
 $(this).parent().prev('div').parent().next('select').selectpicker('val',''); } 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/js/bootstrap-select.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.min.css" rel="stylesheet"/>

<select class="selectpicker">
    <option>Mustard</option>
    <option>Ketchup</option>
    <option>Relish</option>
</select>

4

2 回答 2

2

我自己找到了解决方案,您现在可以使用键盘进行选择和取消选择,也可以使用箭头进行选择,只需按 Enter 即可选择数据,如果您想取消选择,只需在下拉框中按 Enter 即可取消选择数据

$('.selectpicker').selectpicker({
    liveSearch:true,
    showTick:true
});

$(document).on('click', '.dropdown-menu li', function(event){
    if($(this).hasClass('active')){
  $(this).parent().prev('div').parent().next('select').selectpicker('val',''); } 
});

$(document).bind("keyup",".dropdown-menu li", function(e){
    var activeIndex = $(".dropdown-menu li.active").data('original-index');
    var selectedIndex = $(".dropdown-menu li.selected").data('original-index');
    if(e.which == 13){
       if(selectedIndex == activeIndex){
          $(".dropdown-menu li.active").find("a").trigger('click');
       
       } else {
          $(".dropdown-menu li.active").removeClass('active').find("a").trigger('click'); 
       }
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/js/bootstrap-select.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.min.css" rel="stylesheet"/>

<select class="selectpicker">
    <option value='1'>Mustard</option>
    <option value='2'>Ketchup</option>
    <option value='3'>Relish</option>
</select>

于 2017-12-27T10:52:42.687 回答
1

我已经更新了你的代码,它对我来说很好。请检查。

<select id="cus" class="selectpicker" multiple>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>

$('#cus').selectpicker({
  liveSearch: true,
 showTick:true
});

选择没有错误。

下面是将所选值作为数组返回的代码 $("#cus").val()

谢谢你。

于 2017-12-27T13:08:24.820 回答