Coerce all array values to strings before comparison in val(). Fixes bug #7123.
This commit is contained in:
parent
a2aefbf3b1
commit
b03416954d
|
@ -215,6 +215,10 @@ jQuery.fn.extend({
|
||||||
val = "";
|
val = "";
|
||||||
} else if ( typeof val === "number" ) {
|
} else if ( typeof val === "number" ) {
|
||||||
val += "";
|
val += "";
|
||||||
|
} else if ( jQuery.isArray(val) ) {
|
||||||
|
val = jQuery.map(val, function (value) {
|
||||||
|
return value == null ? "" : value + "";
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
|
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
|
||||||
|
|
|
@ -409,7 +409,19 @@ test("val(String/Number)", function() {
|
||||||
|
|
||||||
test("val(Function)", function() {
|
test("val(Function)", function() {
|
||||||
testVal(functionReturningObj);
|
testVal(functionReturningObj);
|
||||||
})
|
});
|
||||||
|
|
||||||
|
test( "val(Array of Numbers) (Bug #7123)", function() {
|
||||||
|
expect(4);
|
||||||
|
jQuery('#form').append('<input type="checkbox" name="arrayTest" value="1" /><input type="checkbox" name="arrayTest" value="2" /><input type="checkbox" name="arrayTest" value="3" checked="checked" /><input type="checkbox" name="arrayTest" value="4" />');
|
||||||
|
var elements = jQuery('input[name=arrayTest]').val([ 1, 2 ]);
|
||||||
|
ok( elements[0].checked, "First element was checked" );
|
||||||
|
ok( elements[1].checked, "Second element was checked" );
|
||||||
|
ok( !elements[2].checked, "Third element was unchecked" );
|
||||||
|
ok( !elements[3].checked, "Fourth element remained unchecked" );
|
||||||
|
|
||||||
|
elements.remove();
|
||||||
|
});
|
||||||
|
|
||||||
test("val(Function) with incoming value", function() {
|
test("val(Function) with incoming value", function() {
|
||||||
expect(10);
|
expect(10);
|
||||||
|
|
Loading…
Reference in a new issue