Reputation: 741
<select name="remaintextarea" id="studentremain" size="10">
<option value="one">One</option>
<option value="two">Two</option>
<option value="three">Three</option>
</select>
<button type='button' id='selectall'>Select All</button>
<button type='button' id='deselectall'>De-Select All</button>
Got a select box above, select all and de-select all buttons above. My question is by using jquery, how can I get the button to select all the options and deselect all the options in the select box above when the relevant buttons are clicked on?
Below I just have the click handlers for both buttons:
$('#selectall').click(function() {
});
$('#deselectall').click(function() {
});
Upvotes: 11
Views: 53710
Reputation: 3765
Most of the answer were outdated, Here selecting and deselecting in two different ways
$('#selectall').click(function() {
$("#studentremain option").prop("selected", true);
});
$('#deselectall').click(function() {
$("#studentremain option").val([]);
});
Upvotes: 0
Reputation: 966
Somehow the answers above did not work for me. Seems that you have to use properties instead of attributes. Here is the code:
$('#selectall').click(function() {
$('select#studentremain option').prop("selected",true);
});
$('#deselectall').click(function() {
$('select#studentremain option').prop("selected",false);
});
Documentation says that selected
attribute only specifies that an option
should be pre-selected when the page loads. But is not set when the actual option
is selected by the user.
Source
Upvotes: 5
Reputation: 2170
You need to add the multiple
attribute to the select element, and then you can:
$('#selectall').click(function() {
$('select#studentremain option').attr("selected","selected");
});
$('#deselectall').click(function() {
$('select#studentremain option').removeAttr("selected");
});
Upvotes: 25
Reputation: 51
Add the multiple attribute to your select box first so that you can have multiple values selected and then something like this would be sufficient since you're using jQuery.
//for selection of all.
$('#studentremain option').attr('selected','selected');
//for removal of selection.
$('#studentremain option').removeAttr('selected');
You can try prop and removeProp in the place of attr.
Upvotes: 3
Reputation: 7872
Try this demo
Must add multiple="multiple" in select element
HTML:
<select multiple="multiple" name="remaintextarea" id="studentremain" size="10">
<option value="one">One</option>
<option value="two">Two</option>
<option value="three">Three</option>
</select>
<button type='button' id='selectall'>Select All</button>
<button type='button' id='deselectall'>De-Select All</button>
JS:
$('#selectall').click(function() {
$('#studentremain > option').attr("selected", "selected");
});
$('#deselectall').click(function() {
$('#studentremain > option').removeAttr("selected");
});
Upvotes: 8