]> source.dussan.org Git - jquery.git/commitdiff
Landing pull request 382. Adds support for number values (meter,progress); Fixes...
authorrwldrn <waldron.rick@gmail.com>
Fri, 20 May 2011 15:03:33 +0000 (11:03 -0400)
committertimmywil <tim.willison@thisismedium.com>
Fri, 20 May 2011 15:03:33 +0000 (11:03 -0400)
More Details:
 - https://github.com/jquery/jquery/pull/382
 - http://bugs.jquery.com/ticket/9319

src/attributes.js
test/unit/attributes.js

index c239dd7f384f8143abf7c53f259dbeed9812dbb7..5396a90e5af31a104186f16cc1707f6c87d94351 100644 (file)
@@ -165,7 +165,13 @@ jQuery.fn.extend({
                                        return ret;
                                }
 
-                               return (elem.value || "").replace(rreturn, "");
+                               ret = elem.value;
+
+                               return typeof ret === "string" ? 
+                                       // handle most common string cases
+                                       ret.replace(rreturn, "") : 
+                                       // handle cases where value is null/undef or number
+                                       ret == null ? "" : ret;
                        }
 
                        return undefined;
index c4ed7d30fccb543e489f162434e7b9dce6c36985..56c398e5cd48afb9b623fcf64da4e4ea4a26eec9 100644 (file)
@@ -611,6 +611,30 @@ test("val()", function() {
        equals( jQuery("<option/>").val("test").attr("value"), "test", "Setting value sets the value attribute" );
 });
 
+if ( "value" in document.createElement("meter") && 
+                       "value" in document.createElement("progress") ) {
+
+       test("val() respects numbers without exception (Bug #9319)", function() {
+
+               expect(4);
+
+               var $meter = jQuery("<meter min='0' max='10' value='5.6'></meter>"),
+                       $progress = jQuery("<progress max='10' value='1.5'></progress>");
+
+               try {
+                       equal( typeof $meter.val(), "number", "meter, returns a number and does not throw exception" );
+                       equal( $meter.val(), $meter[0].value, "meter, api matches host and does not throw exception" );
+
+                       equal( typeof $progress.val(), "number", "progress, returns a number and does not throw exception" );
+                       equal( $progress.val(), $progress[0].value, "progress, api matches host and does not throw exception" );
+
+               } catch(e) {}
+
+               $meter.remove();
+               $progress.remove();
+       });
+}
+
 var testVal = function(valueObj) {
        expect(8);