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())