Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix #12583: Don't ignore disabled property of select-one, close gh-932.
- Loading branch information
Showing
with
20 additions
and
20 deletions.
-
+13
−19
src/attributes.js
-
+7
−1
test/unit/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; |
|
|
}, |
|
|
|
|
|
|
@@ -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"); |
|
|
|
|
|
This comment has been minimized.
425d17d
Um, that's #12584 for you historians.