From: Colin Snover <github.com@zetafleet.com>
Date: Sat, 9 Oct 2010 03:48:06 +0000 (-0500)
Subject: Coerce all array values to strings before comparison in val(). Fixes bug #7123.
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=b03416954d8033e641bd658fb18631699db6cc51;p=jquery.git

Coerce all array values to strings before comparison in val(). Fixes bug #7123.
---

diff --git a/src/attributes.js b/src/attributes.js
index ec4841b..147c353 100644
--- a/src/attributes.js
+++ b/src/attributes.js
@@ -215,6 +215,10 @@ jQuery.fn.extend({
 				val = "";
 			} else if ( typeof val === "number" ) {
 				val += "";
+			} else if ( jQuery.isArray(val) ) {
+				val = jQuery.map(val, function (value) {
+					return value == null ? "" : value + "";
+				});
 			}
 
 			if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
diff --git a/test/unit/attributes.js b/test/unit/attributes.js
index a483195..c6007aa 100644
--- a/test/unit/attributes.js
+++ b/test/unit/attributes.js
@@ -409,7 +409,19 @@ test("val(String/Number)", function() {
 
 test("val(Function)", function() {
 	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() {
 	expect(10);