Attrs: Restore ability to pass array to jQuery#val

Thanks @gibson042
This commit is contained in:
Oleg 2014-01-16 06:55:56 +04:00
parent 9fe051d57e
commit f601dd4d23
2 changed files with 9 additions and 3 deletions

View File

@ -118,12 +118,13 @@ jQuery.extend({
set: function( elem, value ) { set: function( elem, value ) {
var optionSet, option, var optionSet, option,
options = elem.options, options = elem.options,
values = jQuery.makeArray( value ),
i = options.length; i = options.length;
while ( i-- ) { while ( i-- ) {
option = options[ i ]; option = options[ i ];
if ( jQuery.valHooks.option.get( option ) === value ) { if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {
// Support: IE6 // Support: IE6
// When new option element is added to select box we need to // When new option element is added to select box we need to

View File

@ -928,7 +928,7 @@ if ( "value" in document.createElement("meter") &&
} }
var testVal = function( valueObj ) { var testVal = function( valueObj ) {
expect( 8 ); expect( 9 );
jQuery("#text1").val( valueObj("test") ); jQuery("#text1").val( valueObj("test") );
equal( document.getElementById("text1").value, "test", "Check for modified (via val(String)) value of input element" ); equal( document.getElementById("text1").value, "test", "Check for modified (via val(String)) value of input element" );
@ -943,7 +943,9 @@ var testVal = function( valueObj ) {
equal( document.getElementById("text1").value, "", "Check for modified (via val(null)) value of input element" ); equal( document.getElementById("text1").value, "", "Check for modified (via val(null)) value of input element" );
var j, var j,
$select1 = jQuery("#select1"); select = jQuery( "<select multiple><option value='1'/><option value='2'/></select>" );
$select1 = jQuery("#select1"),
$select1.val( valueObj("3") ); $select1.val( valueObj("3") );
equal( $select1.val(), "3", "Check for modified (via val(String)) value of select element" ); equal( $select1.val(), "3", "Check for modified (via val(String)) value of select element" );
@ -959,6 +961,9 @@ var testVal = function( valueObj ) {
j.val( valueObj( "asdf" ) ); j.val( valueObj( "asdf" ) );
equal( j.val(), "asdf", "Check node,textnode,comment with val()" ); equal( j.val(), "asdf", "Check node,textnode,comment with val()" );
j.removeAttr("value"); j.removeAttr("value");
select.val( valueObj( [ "1", "2" ] ) );
deepEqual( select.val(), [ "1", "2" ], "Should set array of values" );
}; };
test( "val(String/Number)", function() { test( "val(String/Number)", function() {