如何使用引导程序中的selectpicker插件在select上设置选定值


97

我正在使用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();

现在,我想在单击按钮时将选择的值设置为此选择……类似这样:

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

但是什么也没发生。

我该如何实现?


1
我不确定您要实现什么,一旦用户在选择中单击该选项即可设置该值
Tom Sarduy 2013年

是的,因为确实值来自ajax调用的方法...
jcvegan

1
该值已正确选择,但您没有看到它,因为该插件隐藏了真正的选择并显示具有无序列表的按钮
Tom Sarduy 2013年

是的,我知道,但是如何解决...我的意思是...用户必须在此控件上看到所选内容
jcvegan 2013年

Answers:


148

该值已正确选择,但您没有看到它,因为该插件隐藏了真正的选择并显示带有无序列表的按钮,因此,如果希望用户在选择上看到选择的值,则可以执行以下操作:

//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指出的那样,更好的解决方案是:

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

编辑2:

要选择多个值,请将这些值作为数组传递。


29
更好的解决方案是:$('select[name=selValue]').val(1);$('.selectpicker').selectpicker('refresh');这样,您仅更改隐藏的选择,调用selectpicker('refresh')重绘按钮。
blushrt 2013年

是的,这样更好@blushrt,添加到我的答案中-Tom
Sarduy

我面临着同样的问题,我无法选择用户私下选择的预选值。
Srikanth Pullela

之后有必要刷新选择器吗?@TomSarduy
ankit suthar '51

@ankitsuthar,是的
Tom Sarduy

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

这就是您需要做的。无需直接更改selectpicker的生成的html,只需更改隐藏的选择字段,然后调用selectpicker('refresh')。


8
这应该是正确的答案!调用.selectpicker('refresh')命令对于选择和更新由selectpicker驱动的下拉列表的当前值至关重要。请注意,在所有.selectpicker元素上调用refresh可能会很慢。如果您知道要操作的对象,则首选在该单个选择列表上调用刷新。
无人驾驶飞机

$('.selectpicker').selectpicker('refresh'); 如果一页上有很多选择器,则可能会破坏您的性能
米歇尔(Michel)

我发现的另一个问题是,这不会打勾选择。
萨耶·巴布

43
$('.selectpicker').selectpicker('val', YOUR_VALUE);

我已经尝试过您的解决方案..但是,尽管我选择了值,但从存储数据的资源中获取了相同的值,但选择时显示“未选择任何内容”。
Shilpi Jaiswal

16

如果使用“ val”参数设置值,则无需刷新,请参见fiddle。在值中使用方括号可启用多个所选值。

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



3

您可以通过在元素上调用val方法来设置所选值。

$('.selectpicker').selectpicker('val', 'Mustard');
$('.selectpicker').selectpicker('val', ['Mustard','Relish']);

这将以多选方式选择所有项目。

$('.selectpicker').selectpicker('selectAll');

有关详细信息,请访问以下站点:https : //silviomoreto.github.io/bootstrap-select/methods/


我已经尝试过您的解决方案..但是,尽管我选择了值,但从存储数据的资源中获取了相同的值,但选择时显示“未选择任何内容”。
Shilpi Jaiswal

3

$('selector').selectpicker('val',value);

可以使用类或ID代替选择器,例如: $('#mySelect').selectpicker('val',your_value)



1

当您没有选项的“硬编码”值(例如1、2、3、4等)时,blushrt的答案略有不同。

假设您渲染的<select>选项值是某些用户的GUID。然后,您将需要以某种方式提取选项的值,以便在上进行设置<select>

在下面,我们选择select的第一个选项。

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>。在这种情况下,默认情况下未选择任何内容,但我们希望始终选择第一项。


1

基于@blushrt的好答案,我将更新此响应。只需使用-

$("#Select_ID").val(id);

如果您已将所需的所有内容预加载到选择器,则可以使用。


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

Abd,我有将json格式传递给json格式的ajax的php脚本:“ car”:“ 8”,“ colors”:“ red,blue,white”}。在这种情况下,如何使用此方法$('。selectpicker')。selectpicker(“ val”,“ data.colors”);将对象“ colors”插入到selectpicker中选中的对象
Michel Xavier

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

以“ 0”为您要选择的项目的值


0

那么另一种方式来做到这一点是,与这个关键字,你可以简单地获取对象在和操纵它的价值。例如:

$("select[name=selValue]").click(
    function() {
        $(this).val(1);
    });



-1

用户ID对于元素,然后

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.