Opened 13 years ago
Closed 12 years ago
#5555 closed bug (worksforme)
using val(val) to set selected option of select list selects wrong option
Reported by: | anentropic | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.4.3 |
Component: | attributes | Version: | 1.4.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
I have a select list like: <select name="sizes" id="mysel"> <option value="3">3</option> <option value="4">3.5</option> <option value="5">4</option> <option value="6">4.5</option> <option value="7">5</option> </select>
I want to set the selected option by value (which correspond to ids in the db): $('#mysel').val(4)
This selects the option with the text label 4, whose value is actually 5.
This is surely incorrect behaviour.
Change History (4)
comment:1 Changed 13 years ago by
comment:2 Changed 13 years ago by
Well, I just read a mailing list post explaining what jQuery is doing here: http://osdir.com/ml/jQuery/2009-05/msg00584.html
Apparently it's even worse... the behaviour is pretty much unpredictable, it could return value OR label depending on the structure of your list. It seems the method has been optimised for speed ahead of utility and common sense...
comment:3 Changed 13 years ago by
Component: | unfiled → attributes |
---|
comment:4 Changed 12 years ago by
Milestone: | 1.4 → 1.4.3 |
---|---|
Resolution: | → worksforme |
Status: | new → closed |
Version: | 1.3.2 → 1.4.2 |
This was resolved in 1.4. More tests here to confirm: http://github.com/jquery/jquery/commit/879799fe955f01b85b59fd8a0096d415fc48df03
..especially since $('#mysel').val() returns the value, *not* the label... so the val method of select lists works differently depending on whether you're getting or setting!