如何在bootstrap中使用selectpicker插件在select上设置选定的值

我正在使用这样的Bootstrap-Select插件:

HTML

<select name="selValue" class="selectpicker"> <option value="1">Val 1</option> <option value="2">Val 2</option> <option value="3">Val 3</option> <option value="4">Val 4</option> </select> 

Javascript

 $('select[name=selValue]').selectpicker(); 

现在我想设置select的值,当这个button被点击时,就像这样:

 $('#mybutton').click(function(){ $('select[name=selValue]').val(1); }); 

但没有任何反应。

我怎样才能做到这一点?

该值是正确select,但你没有看到它,因为插件隐藏真正的select,并显示一个无序列表button,所以,如果你想让用户看到select的值,你可以做这样的事情:

 //Get the text using the value of select var text = $("select[name=selValue] option[value='1']").text(); //We need to show the text inside the span that the plugin show $('.bootstrap-select .filter-option').text(text); //Check the selected attribute for the real select $('select[name=selValue]').val(1); 

编辑:

就像@blushrt指出的,更好的解决scheme是:

 $('select[name=selValue]').val(1); $('.selectpicker').selectpicker('refresh') 
 $('select[name=selValue]').val(1); $('.selectpicker').selectpicker('refresh'); 

这是你需要做的。 不需要直接改变selectpicker生成的html,只需要改变隐藏的select字段,然后调用selectpicker('refresh')。

 $('.selectpicker').selectpicker('val', YOUR_VALUE); 
 $('#mybutton').click(function(){ $('select[name=selValue]').val(1); $('select[name=selValue]').change(); }); 

这对我有效。

如果使用“val”参数设置值,则不需要刷新, 参见小提琴 。 使用括号中的值来启用多个选定的值。

 $('.selectpicker').selectpicker('val', [1]); 

其实你的价值是设置,但你的selectpicker不刷新

正如你可以从文档阅读
https://silviomoreto.github.io/bootstrap-select/methods/#selectpickerval

正确的做法是

 $('.selectpicker').selectpicker('val', 1); 

对于多个值,您可以添加值的数组

 $('.selectpicker').selectpicker('val', [1 , 2]); 
 var bar= $(#foo).find("option:selected").val(); 

当你没有选项的“硬编码”值(即1,2,3,4等)时, blushrt的答案略有变化。

假设您使用选项值作为某些用户的GUID来呈现<select> 。 然后,您将需要以某种方式提取选项的值,以便将其设置在<select>

在下面我们selectselect的第一个选项。

HTML

 <select name="selValue" class="selectpicker"> <option value="CD23E546-9BD8-40FD-BD9A-3E2CBAD81A39">Dennis</option> <option value="4DDCC643-0DE2-4B78-8393-33A716E3AFF4">Robert</option> <option value="D3017807-86E2-4E56-9F28-961202FFF095">George</option> <option value="991C2782-971E-41F8-B532-32E005F6A349">Ivanhoe</option> </select> 

Javascript

 // Initialize the select picker. $('select[name=selValue]').selectpicker(); // Extract the value of the first option. var sVal = $('select[name=selValue] option:first').val(); // Set the "selected" value of the <select>. $('select[name=selValue]').val(sVal); // Force a refresh. $('select[name=selValue]').selectpicker('refresh'); 

我们在多选关键字<select multiple>使用了这个<select multiple> 。 在这种情况下,默认情况下不会select任何内容,但我们希望始终select第一项。

用户标识对于元素,然后

 document.getElementById('selValue').value=Your Value; $('#selValue').selectpicker('refresh'); 

使用这个,它会工作:

  $('select[name=selValue]').selectpicker('val', 1); 
Interesting Posts