bootstrap - 选择没有选中

San*_*yal 4 jquery twitter-bootstrap bootstrap-select

我正在使用bootstrap选择.

<select name="categories[]" id="cat" class="selectpicker" multiple>
</select>
Run Code Online (Sandbox Code Playgroud)

从这里获取选项标签,

var result='';
for(var i=0;  i<res.getcategories.length;  i++) 
{                    
  result += '<option value='+res.getcategories[i].cat_id+'>'+res.getcategories[i].category+'</option>';                 
   $('#cat').html(result); 

}
Run Code Online (Sandbox Code Playgroud)

但是它总是显示没有选择,我不显示其他选项.如果我不使用bootstap类'selectpicker'一切都很好.

gae*_*noM 6

每当您从selectpicker添加或删除元素时,您需要:

.selectpicker('refresh'):要以编程方式使用JavaScript更新选择,请先操作select,然后使用refresh方法更新UI以匹配新状态.在删除或添加选项时,或通过JavaScript禁用/启用选择时,这是必需的.

这意味着你必须执行:

$('#cat').selectpicker('refresh');
Run Code Online (Sandbox Code Playgroud)

当你需要动态添加一个新元素时,最简单和最简单的方法是使用 jQuery:

$('#cat').append($('<option>', {
    value: res.getcategories[i].cat_id,
    text: res.getcategories[i].category
}));
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以避免使用<和>或"和"符号以及诸如此类的问题.

为了处理选择,您可以使用changed.bs.select.

因此,有关如何添加文档就绪的示例以及每当您单击"添加"按钮以及删除和选择的相应实现时,示例如下:

var res = {
  getcategories: [{cat_id: 'Cat Id 1', category: 'Category 1'},
                  {cat_id: 'Cat Id 2', category: 'Category 2'}, {cat_id: 'Cat Id 3', category: 'Category 3'},
                  {cat_id: 'Cat Id 4', category: 'Category 4'}, {cat_id: 'Cat Id 5', category: 'Category 5'}]
};

$(function () {
  $('#add').on('click', function (e) {
    for (var i = 0; i < res.getcategories.length; i++) {
      $('#cat').append($('<option>', {
        value: res.getcategories[i].cat_id,
        text: res.getcategories[i].category
      }));
    }
    $('#cat').selectpicker('refresh');
  }).trigger('click');  // this line to load on selectpicker on document ready

  $('#remove').on('click', function (e) {
    $('#cat option').remove();
    $('#cat').selectpicker('refresh')
  });
  
    $('#cat').on('changed.bs.select', function(e) {
      console.log('Selected elements: ' + ($('#cat').val() || ['Nothing selected']).join(', '));
    })
});
Run Code Online (Sandbox Code Playgroud)
<link rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/css/bootstrap-select.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/js/bootstrap-select.min.js"></script>


<div class="container">
    <h1>Selectpicker</h1>

    <div class="row">
        <div class="col-xs-12">
            <select name="categories[]" id="cat" class="selectpicker" multiple>
            </select>
        </div>
    </div>
</div>
<div class="container-fluid">
    <h1></h1>

    <div class="row">
        <div class="col-xs-4">
            <button id="add" type="button" class="btn btn-default btn-lg"><span class="glyphicon glyphicon-plus"></span>
                Add Options
            </button>
        </div>
        <div class="col-xs-8">
            <button id="remove" type="button" class="btn btn-default btn-lg"><span
                    class="glyphicon glyphicon-remove"></span> Remove Options
            </button>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)