Reputation: 6135
I have two dropdowns. When a user selects a value from the first one I want in the second (which has the multiple select option), with jQuery, to select some values automatically. How can I do that?
First select box:
<select id="update_carte_s" name="update_carte_s">
<option value="5!**8,9**!6!44.9">Ghid complet Internet</option>
<option value="6!**6,7**!6!24.95">PC pas cu pas</option>
<option value="7!**10**!3!27.95">Jocul ingerului</option>
<option value="8!**11,12**!8!39">Ghidul vinurilor</option>
</select>
Second select box:
<select id="uc_autori_s" name="uc_autorilist[]" size="5" multiple>
<option value="3">Rose Tremain</option>
<option value="4">Jonathan Coe</option>
<option value="5">Cecilia Ahern</option>
<option value="6">Marinel Serban</option>
<option value="7">Emanuela Cherchez</option>
<option value="8">Peter Buckley</option>
<option value="9">Clark Duncan</option>
<option value="10">Carlos-Ruiz Zafon</option>
<option value="11">Catalin Paduraru</option>
<option value="12">Dan-Silviu Boerescu</option>
</select>
The bolded values from the first select box split by ,
are the values that I want to select from the second select box. For example 11,12
would mean in the second box options with values 11 and 12 to be selected.
Currently I have something like this:
$.bookAuthors = $.bookDetailsArray[1].split(',');
$.each($.bookAuthors, function( intIndex, objValue ){
$("#uc_autori_s").val(objValue).attr("selected","selected");
});
but the problem is that only the last value is selected in my case 12 (selection of 11 is lost).
Upvotes: 33
Views: 103154
Reputation: 231
The most simplest and updated way of jQuery is to use the map function
var abc = $("select option:selected").map(function() {
return this.value;
}).get().join(",");
Upvotes: 0
Reputation: 741
You need to do following to select values in multiselect. Since multiselect returns an array of values when selected, so the same needs to be given to it when its values are to be set by default.
<select id="sonyConsoles" multiple>
<option value="1">PS4 Pro</option>
<option value="2">PS4</option>
<option value="3">PS3</option>
<option value="4">PS Vita</option>
<option value="5">PSP</option>
</select>
If you wish options 1,2 and 4 to be selected by default then do; $('#sonyConsoles').val([1,2,4]);
This will return the selectBox which has option 1,2 and 5 selected.
Upvotes: 2
Reputation: 440
Here is the simple way to find and select multi select dropdown
$('#selectID ').children("option[value=" + myValue + "]").prop("selected", true);
Upvotes: 0
Reputation: 6276
For example, you have a select box like this one:
<select id="books">
<option value="1">Harry Porter</option>
<option value="2">Eragon</option>
<option value="3">Gadfly</option>
<option value="4">C++ For Dummies</option>
<option value="5">Android Cookbook</option>
</select>
The way to select multiple options (Eragon, Gadfly for example) is to create an object that contains values of options you want to select, then use this:
var options = ["2", "3"];
$("#books").val(options);
Upvotes: 37
Reputation: 121
<select id="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
<script>
$("#multiple").val(["Multiple2", "Multiple3"]);
</script>
Upvotes: 4
Reputation: 985
You can pass a select with multiple values an array
$("#uc_autori_s").val( $.bookAuthors );
Upvotes: 63
Reputation: 155935
You're not going to be able to use the val
method to set multiple option
s as selected. Instead, you should select the option itself, and set its selected attribute:
$('#uc_autori_s option[value=' + objValue + ']').attr('selected', true);
Upvotes: 58