mirror of
https://github.com/jquery/jquery.git
synced 2026-04-20 03:01:22 -04:00
Fix #12583: Don't ignore disabled property of select-one, close gh-932.
This commit is contained in:
committed by
Dave Methvin
parent
da3ff3afe4
commit
425d17de83
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user