Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fix #12583: Don't ignore disabled property of select-one, close gh-932.

  • Loading branch information...
commit 425d17de832d281c2577f8d6653030cef95907b5 1 parent da3ff3a
@gibson042 gibson042 authored dmethvin committed
Showing with 20 additions and 20 deletions.
  1. +13 −19 src/attributes.js
  2. +7 −1 test/unit/attributes.js
View
32 src/attributes.js
@@ -225,26 +225,25 @@ jQuery.extend({
},
select: {
get: function( elem ) {
- var value, i, max, option,
- index = elem.selectedIndex,
- values = [],
+ var value, option,
options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
// Loop through all the selected options
- i = one ? index : 0;
- max = one ? index + 1 : options.length;
for ( ; i < max; i++ ) {
option = options[ i ];
- // Don't return options that are disabled or in a disabled optgroup
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
// Get the specific value for the option
value = jQuery( option ).val();
@@ -259,11 +258,6 @@ jQuery.extend({
}
}
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
- if ( one && !values.length && options.length ) {
- return jQuery( options[ index ] ).val();
- }
-
return values;
},
View
8 test/unit/attributes.js
@@ -718,7 +718,7 @@ test("removeProp(String)", function() {
});
test("val()", function() {
- expect( 20 + ( jQuery.fn.serialize ? 6 : 0 ) );
+ expect( 21 + ( jQuery.fn.serialize ? 6 : 0 ) );
document.getElementById("text1").value = "bla";
equal( jQuery("#text1").val(), "bla", "Check for modified value of input element" );
@@ -761,6 +761,12 @@ test("val()", function() {
jQuery("#select5").val(3);
equal( jQuery("#select5").val(), "3", "Check value on ambiguous select." );
+ strictEqual(
+ jQuery("<select name='select12584' id='select12584'><option value='1' disabled='disabled'>1</option></select>").val(),
+ null,
+ "Select-one with only option disabled (#12584)"
+ );
+
if ( jQuery.fn.serialize ) {
var checks = jQuery("<input type='checkbox' name='test' value='1'/><input type='checkbox' name='test' value='2'/><input type='checkbox' name='test' value=''/><input type='checkbox' name='test'/>").appendTo("#form");

1 comment on commit 425d17d

@dmethvin
Owner

Um, that's #12584 for you historians.

Please sign in to comment.
Something went wrong with that request. Please try again.