How to set selected value on select using selectpicker plugin from bootstrap
I'm using the Bootstrap-Select plugin like this:
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();
Now I want to set the value selected to this select when button clicked... something like this:
$('#mybutton').click(function(){
$('select[name=selValue]').val(1);
});
But nothing happens.
How can I achieve this?
Solution 1:
The value is correctly selected, but you didn't see it because the plugin hide the real select and show a button with an unordered list, so, if you want that the user see the selected value on the select you can do something like this:
//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);
Edit:
Like @blushrt points out, a better solution is:
$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh')
Edit 2:
To select multiple values, pass the values as an array.
Solution 2:
$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh');
This is all you need to do. No need to change the generated html of selectpicker directly, just change the hidden select field, and then call the selectpicker('refresh').
Solution 3:
$('.selectpicker').selectpicker('val', YOUR_VALUE);
Solution 4:
No refresh is needed if the "val"-parameter is used for setting the value, see fiddle. Use brackets for the value to enable multiple selected values.
$('.selectpicker').selectpicker('val', [1]);