mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Fix #10478. Replace jQuery.isNaN with jQuery.isNumeric.
Thanks to Christian C. Salvadó for the unit tests!
This commit is contained in:
parent
6afc2c074b
commit
83c08ffa1f
@ -483,8 +483,8 @@ jQuery.extend({
|
|||||||
return obj && typeof obj === "object" && "setInterval" in obj;
|
return obj && typeof obj === "object" && "setInterval" in obj;
|
||||||
},
|
},
|
||||||
|
|
||||||
isNaN: function( obj ) {
|
isNumeric: function( obj ) {
|
||||||
return obj == null || !rdigit.test( obj ) || isNaN( obj );
|
return obj != null && rdigit.test( obj ) && !isNaN( obj );
|
||||||
},
|
},
|
||||||
|
|
||||||
type: function( obj ) {
|
type: function( obj ) {
|
||||||
|
@ -211,7 +211,7 @@ if ( !jQuery.support.opacity ) {
|
|||||||
set: function( elem, value ) {
|
set: function( elem, value ) {
|
||||||
var style = elem.style,
|
var style = elem.style,
|
||||||
currentStyle = elem.currentStyle,
|
currentStyle = elem.currentStyle,
|
||||||
opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")",
|
opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
|
||||||
filter = currentStyle && currentStyle.filter || style.filter || "";
|
filter = currentStyle && currentStyle.filter || style.filter || "";
|
||||||
|
|
||||||
// IE has trouble with opacity if it does not have layout
|
// IE has trouble with opacity if it does not have layout
|
||||||
|
@ -323,7 +323,7 @@ function dataAttr( elem, key, data ) {
|
|||||||
data = data === "true" ? true :
|
data = data === "true" ? true :
|
||||||
data === "false" ? false :
|
data === "false" ? false :
|
||||||
data === "null" ? null :
|
data === "null" ? null :
|
||||||
!jQuery.isNaN( data ) ? parseFloat( data ) :
|
jQuery.isNumeric( data ) ? parseFloat( data ) :
|
||||||
rbrace.test( data ) ? jQuery.parseJSON( data ) :
|
rbrace.test( data ) ? jQuery.parseJSON( data ) :
|
||||||
data;
|
data;
|
||||||
} catch( e ) {}
|
} catch( e ) {}
|
||||||
|
@ -61,7 +61,7 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
|
|||||||
var orig = jQuery.css( elem, type ),
|
var orig = jQuery.css( elem, type ),
|
||||||
ret = parseFloat( orig );
|
ret = parseFloat( orig );
|
||||||
|
|
||||||
return jQuery.isNaN( ret ) ? orig : ret;
|
return jQuery.isNumeric( ret ) ? ret : orig;
|
||||||
|
|
||||||
// Set the width or height on the element (default to pixels if value is unitless)
|
// Set the width or height on the element (default to pixels if value is unitless)
|
||||||
} else {
|
} else {
|
||||||
|
@ -454,6 +454,46 @@ test("isFunction", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test( "isNumeric", function() {
|
||||||
|
expect( 33 );
|
||||||
|
|
||||||
|
var t = jQuery.isNumeric;
|
||||||
|
|
||||||
|
ok( t("-10"), "Negative integer string");
|
||||||
|
ok( t("0"), "Zero string");
|
||||||
|
ok( t("5"), "Positive integer string");
|
||||||
|
ok( t(-16), "Negative integer number");
|
||||||
|
ok( t(0), "Zero integer number");
|
||||||
|
ok( t(32), "Positive integer number");
|
||||||
|
ok( t("040"), "Octal integer literal string");
|
||||||
|
ok( t(0144), "Octal integer literal");
|
||||||
|
ok( t("0xFF"), "Hexadecimal integer literal string");
|
||||||
|
ok( t(0xFFF), "Hexadecimal integer literal");
|
||||||
|
ok( t("-1.6"), "Negative floating point string");
|
||||||
|
ok( t("4.536"), "Positive floating point string");
|
||||||
|
ok( t(-2.6), "Negative floating point number");
|
||||||
|
ok( t(3.1415), "Positive floating point number");
|
||||||
|
ok( t(8e5), "Exponential notation");
|
||||||
|
ok( t("123e-2"), "Exponential notation string");
|
||||||
|
equals( t(""), false, "Empty string");
|
||||||
|
equals( t(" "), false, "Whitespace characters string");
|
||||||
|
equals( t("\t\t"), false, "Tab characters string");
|
||||||
|
equals( t("abcdefghijklm1234567890"), false, "Alphanumeric character string");
|
||||||
|
equals( t("xabcdefx"), false, "Non-numeric character string");
|
||||||
|
equals( t(true), false, "Boolean true literal");
|
||||||
|
equals( t(false), false, "Boolean false literal");
|
||||||
|
equals( t("bcfed5.2"), false, "Number with preceding non-numeric characters");
|
||||||
|
equals( t("7.2acdgs"), false, "Number with trailling non-numeric characters");
|
||||||
|
equals( t(undefined), false, "Undefined value");
|
||||||
|
equals( t(null), false, "Null value");
|
||||||
|
equals( t(NaN), false, "NaN value");
|
||||||
|
equals( t(Infinity), false, "Infinity primitive");
|
||||||
|
equals( t(Number.POSITIVE_INFINITY), false, "Positive Infinity");
|
||||||
|
equals( t(Number.NEGATIVE_INFINITY), false, "Negative Infinity");
|
||||||
|
equals( t({}), false, "Empty object");
|
||||||
|
equals( t(function(){} ), false, "Instance of a function");
|
||||||
|
});
|
||||||
|
|
||||||
test("isXMLDoc - HTML", function() {
|
test("isXMLDoc - HTML", function() {
|
||||||
expect(4);
|
expect(4);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user