Pure JavaScript: a function like jQuery's isNumeric()
There's no isNumeric()
type of function, but you could add your own:
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
NOTE: Since parseInt()
is not a proper way to check for numeric it should NOT be used.
IsNumeric() similar function to js
use isNaN()
and pass a string or number to it. It will return true or false. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
Is there any javascript or jquery function that determines whether a string is a number or date?
Short answer: No, not really.
This is because dates can appear in several formats. You can have String dates, Date dates, or Number dates. A Unix timestamp is essentially just a 1 to 10 digit integer. You need context in order to determine what that integer represents.
However, the fact that you need a function like this in your code is indicative of a larger problem. Ideally, you should know the data types and formats of your function outputs. If you're using an API, it should have a well documented interface and thus help you avoid this problem.
But if you only need something that works 90% of the time, you could give this a try.
function isDate (x) {
if (x instanceof Date) { return true; }
if (typeof x === String && !isNaN(Date.parse(x))) { return true; }
return false;
}
Why not Number.isNumber or Function.isFunction?
You should not worry much about such. There are already a lot of methods. For your query, you can use Number.isNaN
for checking number and use typeof
to know if the given variable is a function.
You can check the following answers:
Is there any function like IsNumeric in JavaScript to validate numbers?
How can I check if a javascript variable is function type?
Array is a collection. The collection might refer to [...] or {...} and this is why there's Array.isArray to check if the given collection is array or not. But there's no other way arround for differentiating the function and the number between themselves. And this is perfect reason the javascript should not have such function.
How can I check if a string is a valid number?
2nd October 2020: note that many bare-bones approaches are fraught with subtle bugs (eg. whitespace, implicit partial parsing, radix, coercion of arrays etc.) that many of the answers here fail to take into account. The following implementation might work for you, but note that it does not cater for number separators other than the decimal point ".
":
function isNumeric(str) {
if (typeof str != "string") return false // we only process strings!
return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
!isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail
}
To check if a variable (including a string) is a number, check if it is not a number:
This works regardless of whether the variable content is a string or number.
isNaN(num) // returns true if the variable does NOT contain a valid number
Examples
isNaN(123) // false
isNaN('123') // false
isNaN('1e10000') // false (This translates to Infinity, which is a number)
isNaN('foo') // true
isNaN('10px') // true
isNaN('') // false
isNaN(' ') // false
isNaN(false) // false
Of course, you can negate this if you need to. For example, to implement the IsNumeric
example you gave:
function isNumeric(num){
return !isNaN(num)
}
To convert a string containing a number into a number:
Only works if the string only contains numeric characters, else it returns NaN
.
+num // returns the numeric value of the string, or NaN
// if the string isn't purely numeric characters
Examples
+'12' // 12
+'12.' // 12
+'12..' // NaN
+'.12' // 0.12
+'..12' // NaN
+'foo' // NaN
+'12px' // NaN
To convert a string loosely to a number
Useful for converting '12px' to 12, for example:
parseInt(num) // extracts a numeric value from the
// start of the string, or NaN.
Examples
parseInt('12') // 12
parseInt('aaa') // NaN
parseInt('12px') // 12
parseInt('foo2') // NaN These last three may
parseInt('12a5') // 12 be different from what
parseInt('0x10') // 16 you expected to see.
Floats
Bear in mind that, unlike +num
, parseInt
(as the name suggests) will convert a float into an integer by chopping off everything following the decimal point (if you want to use parseInt()
because of this behaviour, you're probably better off using another method instead):
+'12.345' // 12.345
parseInt(12.345) // 12
parseInt('12.345') // 12
Empty strings
Empty strings may be a little counter-intuitive. +num
converts empty strings or strings with spaces to zero, and isNaN()
assumes the same:
+'' // 0
+' ' // 0
isNaN('') // false
isNaN(' ') // false
But parseInt()
does not agree:
parseInt('') // NaN
parseInt(' ') // NaN
JQuery .isNumeric
according to http://api.jquery.com/jQuery.isNumeric/
it's :jQuery.isNumeric(value)
so, it should be $.isNumeric($("#EmpNum").val())
Related Topics
How to Get the Position of Element Transformed with CSS Rotate
Tool for Checking Unused CSS Selectors
CSS Float Elements with Unequal Heights Left and Up in Grid
What Is the Most Efficient Way to Parse a CSS Color in JavaScript
Simplest Way to Set Cursor to Wait, Then Have All Elements Revert Back
How to Read the Applied CSS-Counter Value
Using JavaScript to Detect Google Chrome to Switch CSS
Safari in iOS8 Is Scrolling Screen When Fixed Elements Get Focus
Perspective Transform of Svg Paths (Four Corner Distort)
React - Prevent Event Trigger on Parent from Child
Jquery .Animate() Stop Scrolling When User Scrolls Manually
React Inline Style - Style Prop Expects a Mapping from Style Properties to Values, Not a String
Generating CSS Media Queries with JavaScript or Jquery
How to Change Text Color Based on Background Color Using CSS
How to Darken an Image on Mouseover