Reputation: 1322
I asked a similar question before but with only one select option... this time i have multiple select options with the same id's... is it possible to reset all options to zero?
my jquery (only works with first select):
$( "#reset" ).click(function() {
$('#overtimehours').val(0);
});
<select class="overtimehours" id="overtimehours" name="overtimehours[165231]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<select class="overtimehours" id="overtimehours" name="overtimehours[165232]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<input type="button" id="reset" value="reset"></input>
Upvotes: 0
Views: 381
Reputation: 82241
You should use class selector. id selector select first element in matched selector. also using duplicate id is bad practice. try this:
$('.overtimehours').val(0);
Upvotes: 0
Reputation: 18566
You have used $('#overtimehours')
which will always return only one node. Avoid using multiple same IDs as IDs must be unique.
instead use
$('.overtimehours').val(0);
Upvotes: 0
Reputation: 2290
Two things: 1. IDs must be unique 2. You can use class instead
See DEMO HERE
<select class="overtimehours" id="overtimehours1" name="overtimehours[16523]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<select class="overtimehours" id="overtimehours2" name="overtimehours[165235]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<select class="overtimehours" id="overtimehours3" name="overtimehours[165231]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<select class="overtimehours" id="overtimehours4" name="overtimehours[165232]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<input type="button" id="reset" value="reset"></input>
$( "#reset" ).click(function() {
$('.overtimehours').val(0);
});
Upvotes: 1
Reputation: 38102
id
must be unique, otherwise your selector will always match the first element with that duplicated id
, so you need to assign different id
value for each select
element or remove all the duplicated id
:
<select class="overtimehours" name="overtimehours[16523]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<select class="overtimehours" name="overtimehours[165235]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<select class="overtimehours" name="overtimehours[165231]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<select class="overtimehours" name="overtimehours[165232]">
<option value="2.75">2.75</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.5">0.5</option>
<option value="5">5</option>
<option value="5.25">5.25</option>
</select>
<input type="button" id="reset" value="reset"></input>
then you can use .
to target your elements using class instead:
$("#reset").click(function () {
$('.overtimehours').val(0);
});
Upvotes: 1
Reputation: 783
Change the
$('#overtimehours').val(0);
to
$('.overtimehours').val(0);
It's a class and not a ID.
Upvotes: 1
Reputation: 337580
Use the class as id
attributes must be unique:
$( "#reset" ).click(function() {
$('.overtimehours').val(0);
});
You will need to remove the duplicates otherwise your HTML will be rendered invalid.
Upvotes: 1
Reputation: 18099
You cannot have same id on multiple elements. Replace it with the class.
Upvotes: 1