Ticket #2652 (closed enhancement: fixed)
val() returns an empty string in IE6/7
| Reported by: | kowcik | Owned by: | flesler |
|---|---|---|---|
| Priority: | minor | Milestone: | 1.3 |
| Component: | core | Version: | 1.2.6 |
| Keywords: | val, select selected | Cc: | |
| Blocking: | Blocked by: |
Description
See the attached example.
Attachments
Change History
comment:1 Changed 5 years ago by flesler
- Status changed from new to closed
- Resolution set to invalid
So.. the options don't have a 'value' attribute, it's expected that you get and empty string as return.
I'll close as invalid, but please reopen if you have anything else to say, do include more details when you do that (better test case and tell us what you expect the return to be, etc).
comment:2 Changed 5 years ago by kowcik
- Status changed from closed to reopened
- Resolution invalid deleted
In IE val() returns empty strings, whereas in Firefox the value is returned also when there's no value attributed. This should the desired behaviour, because val seems to be an abstraction to access inputs values as they would be submitted to the server. Also, there is a specific line in jQuery code that tries to retrieve values from options, but for some reason this value is not returned later. Generally option.text is the right property to read from in IE.
//val function source code
if ( option.selected ) {
// Get the specifc value for the option
value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;
comment:5 Changed 5 years ago by flesler
- need changed from Patch to Commit
- Priority changed from major to minor
- Version changed from 1.2.3 to 1.2.6
- Type changed from bug to enhancement
- Milestone changed from 1.2.4 to 1.3
val() is meant to be used on selects, not on options. If you call it on a select, it will return the value of the selected options, or an array if it's "multiple".
Still.. I pulled out a patch, I'll ask for opinions to see if it should be applied or not.
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.


Test case from jQuery documentation