diff --git a/src/zepto.js b/src/zepto.js
index e46fcf4ec..d081408cd 100644
--- a/src/zepto.js
+++ b/src/zepto.js
@@ -343,6 +343,13 @@ var Zepto = (function() {
return true
}
+ $.isNumeric = function(val) {
+ var num = Number(val), type = typeof val
+ return val != null && type != 'boolean' &&
+ (type != 'string' || val.length) &&
+ !isNaN(num) && isFinite(num) || false
+ }
+
$.inArray = function(elem, array, i){
return emptyArray.indexOf.call(array, elem, i)
}
diff --git a/test/zepto.html b/test/zepto.html
index 5fe8a00d5..6aa7bd60c 100644
--- a/test/zepto.html
+++ b/test/zepto.html
@@ -440,6 +440,27 @@
Zepto Core unit tests
t.assertTrue($.isWindow($('iframe').get(0).contentWindow))
},
+ testDollarIsNumeric: function(t){
+ t.assertTrue($.isNumeric( '-10' ))
+ t.assertTrue($.isNumeric( '0' ))
+ t.assertTrue($.isNumeric( 0xFF ))
+ t.assertTrue($.isNumeric( '0xFF' ))
+ t.assertTrue($.isNumeric( '8e5' ))
+ t.assertTrue($.isNumeric( '3.1415' ))
+ t.assertTrue($.isNumeric( +10 ))
+ t.assertTrue($.isNumeric( 0144 ))
+
+ t.assertFalse($.isNumeric( '-0x42' ), '-0x42')
+ t.assertFalse($.isNumeric( '7.2acdgs' ), '7.2acdgs')
+ t.assertFalse($.isNumeric( '' ), 'empty string')
+ t.assertFalse($.isNumeric( {} ), 'empty hash')
+ t.assertFalse($.isNumeric( NaN ), 'NaN')
+ t.assertFalse($.isNumeric( null ), 'null')
+ t.assertFalse($.isNumeric( true ), 'true')
+ t.assertFalse($.isNumeric( Infinity ), 'Infinity')
+ t.assertFalse($.isNumeric( undefined ), 'undefined')
+ },
+
// test to see if we augment iOS 3.2 with String#trim()
testTrim: function(t){
t.assertEqual("blah", " blah ".trim())