121

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?

KyleMit
  • 30,350
  • 66
  • 462
  • 664
jcvegan
  • 3,111
  • 9
  • 43
  • 66

24 Answers24

186

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.

Vignesh Raja
  • 7,927
  • 1
  • 33
  • 42
Tomas Ramirez Sarduy
  • 17,294
  • 8
  • 69
  • 85
83
$('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').

Simon Polak
  • 1,959
  • 1
  • 13
  • 21
  • 10
    This should be the correct answer! Calling the .selectpicker('refresh') command is crucial to selection and update the current value of a selectpicker powered dropdownlist. Please note, calling refresh on ALL .selectpicker elements can be slow. If you konw the object to operate- its preferred to call refresh on that single select list. – Shawn J. Molloy Aug 29 '14 at 01:45
  • 1
    `$('.selectpicker').selectpicker('refresh');` can kill your performance if you have a lot of selectpickers on one page – Michel Dec 14 '18 at 14:43
  • Another problem I found is, This won't tick the selection. – Sajeer Babu Apr 11 '19 at 10:35
51
$('.selectpicker').selectpicker('val', YOUR_VALUE);
Leistungsabfall
  • 6,368
  • 7
  • 33
  • 41
Jesterhead
  • 519
  • 4
  • 2
  • I have tried your solution.. but its showing 'nothing selected' in my select, though I have selected value and I am getting same from resource where i am storing data. – Shilpi Jaiswal Sep 19 '18 at 08:42
17

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]); 
cederlof
  • 7,206
  • 4
  • 45
  • 62
10
$('#mybutton').click(function(){
   $('select[name=selValue]').val(1);
   $('select[name=selValue]').change();
});

This worked for me.

Janith Widarshana
  • 3,213
  • 9
  • 51
  • 73
9

Actually your value is set, but your selectpicker is not refreshed

As you can read from documentation
https://silviomoreto.github.io/bootstrap-select/methods/#selectpickerval

The right way to do this would be

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

For multiple values you can add array of values

$('.selectpicker').selectpicker('val', [1 , 2]);
Hillar Kapsta
  • 135
  • 1
  • 8
8

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

in place of selector you can give you selector either class or id for example: $('#mySelect').selectpicker('val',your_value)

Yaron
  • 1,199
  • 1
  • 15
  • 35
vivek korada
  • 101
  • 1
  • 4
6

You can set the selected value by calling the val method on the element.

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

This will select all items in a multi-select.

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

details are available on site : https://silviomoreto.github.io/bootstrap-select/methods/

Awanish Kumar
  • 640
  • 8
  • 15
  • I have tried your solution.. but its showing 'nothing selected' in my select, though I have selected value and I am getting same from resource where i am storing data. – Shilpi Jaiswal Sep 19 '18 at 08:44
3
$('.selectpicker').selectpicker("val", "value");
Abd Abughazaleh
  • 4,615
  • 3
  • 44
  • 53
  • Abd, i have php script that pass json format to ajax where the json format is like that: *"car":"8","colors":"red,blue,white"}*. In this case how can insert the object "colors" as checked inside selectpicker using this method *$('.selectpicker').selectpicker("val", "data.colors");*? – Michel Xavier Apr 12 '20 at 23:08
3

When you use Bootstrap Selectpicker then you should use this to get the selected option's value.

$('#membershipadmin').selectpicker("option:selected").val();
2

A slight variation of blushrt's answer for when you do not have "hard coded" values for options (i.e. 1, 2, 3, 4 etc.)

Let's say you render a <select> with options values being GUIDs of some users. Then you will need to somehow extract the value of the option in order to set it on the <select>.

In the following we select the first option of the 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');

We used this in a select with the multiple keyword <select multiple>. In this case nothing is selected per default, but we wanted the first item to always be selected.

Kristian Vinther
  • 578
  • 2
  • 6
  • 15
2

Based on @blushrt 's great answer I will update this response. Just using -

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

works if you've preloaded everything you need to the selector.

Yonatan
  • 73
  • 8
2

Not a single one of these solutions helped. In my case, i was using Bootstrap 5.x and v1.14.x of boostrap-select.

In case it helps anyone else the solution was to make sure jquery was loaded before bootstrap-select. when that is done, this works

$('#sel_control').selectpicker('val','1010');
mike01010
  • 5,226
  • 6
  • 44
  • 77
1
var bar= $(#foo).find("option:selected").val();
Shree Krishna
  • 8,474
  • 6
  • 40
  • 68
abdul
  • 19
  • 3
1

Also, you can just call this for multi-value

$(<your select picker>).selectpicker("val", ["value1", "value2"])

You can find more here https://developer.snapappointments.com/bootstrap-select/methods/

1
$('.selectpicker option:selected').val();

Just put option:selected to get value, because the bootstrap selectpicker change to and appear in diferent way. But select still there selected

1

What worked for me, perfectly, every time was the following (Bootstrap 3.4.1):

   $("#myDropDown").val(MyDropDownValue).change();

as in:

   $("#ddlSalutations").val(data.SalutationID).change();

None of the methods posted here work (anymore) as you'll always get the following error in your browser. Something must have changed since.

Uncaught TypeError: $(...).selectpicker is not a function

Hope this helps anyone else going crazy over this.

MC9000
  • 2,076
  • 7
  • 45
  • 80
  • im still going crazy. does this work w/ 'live search'? tried the latest beta also - no luck. i am using bootstrap 5.x though – mike01010 Aug 20 '22 at 21:41
1

This will not trigger an onChange on picker element (if any):

$(element).val(myVal)
$(element).selectpicker('refresh')

If on change is to be also triggered:

$(element).val(myVal)
$(element).selectpicker('refresh').trigger('change') // also trigger 'change'
Shivam Jha
  • 3,160
  • 3
  • 22
  • 36
0
$('.selectpicker').selectpicker('val', '0');

With the '0' being the value of the item you want selected

kevin3954
  • 95
  • 2
  • 13
0

Well another way to do it is, with this keyword, you can simply get the object in this and manipulate it's value. Eg :

$("select[name=selValue]").click(
    function() {
        $(this).val(1);
    });
Mohd Naved
  • 448
  • 6
  • 20
0
$('select[name=selValue]').selectpicker('val', '1')

works fine.

But

var variable = '2' 

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

is not working with Bootstrap 5. In BS 4 it works.

Suraj Rao
  • 29,388
  • 11
  • 94
  • 103
Thomas
  • 1
0

simply add an option before the other option so it will be automatically appended

<select name="class" class="form-control selectpicker" data-live-search="true">
   <option value="" selected>I am default selected text</option>
   <option value="9a">9A</option>
   <option value="9b">9B</option>
</select>

note: empty option will not considered, it will display Nothing selected from plugin

Hadayat Niazi
  • 1,991
  • 3
  • 16
  • 28
-2

User ID For element, then

document.getElementById('selValue').value=Your Value;
$('#selValue').selectpicker('refresh');
AB Shaman
  • 21
  • 12
-3

use this and it's gonna work:

 $('select[name=selValue]').selectpicker('val', 1);
Chuck Conway
  • 16,287
  • 11
  • 58
  • 101