You are here: irt.org | FAQ | JavaScript | Number | Q39 [ previous next ]
There is code around (can't lay my hand on it at the moment) that can do lots of wonderful validation for numbers.
However, if it was me I would use something like the following:
<script language="JavaScript"><!-- function isan(string) { if (string.length == 0) return false; for (var i=0;i < string.length;i++) if ((string.substring(i,i+1) < '0') || (string.substring(i,i+1) > '9')) return false; return true; } //--></script>
The following is a more efficient method, submitted by Mike Crawford:
<script language="JavaScript"><!-- function validateInt(iString) { // no leading 0s allowed return (("" + parseInt(iString)) == iString); } //--></script>
The following was submitted by Lalit C
There is single function isNaN (num).
- It returns true, if the parameter is NaN (Not A Number).
eg- No. with embeded blank or characters/symbols are NaN.
- It will return a number (if its a valid number), after trimming blanks on both sides
if (isNaN (myNumber)) { // Not A Number alert('Please enter a valid no.') ; } else { // A valid Number // do some processing with the number }
The following was submitted by SAJEETH.K
Hmm... FAQ Knowledge Base Q39 holds valid only in case of INTEGERS. I hope the following code would work well for even floats (it also has provision for checking precision of float too, in this case 2 decimal digits). But, might be too straight forward instead of being technical. But,a working solution is what people demand..so it "WORKS"...
function validateInt(fieldValue) { var found=0,i=0; var allowedChars=".1234567890"; for (i=0;(i<fieldValue.length) && (found==0);i++) { if (allowedChars.indexOf(fieldValue.charAt(i)) == -1) { found=1; alert('Error:: Field contains non-numeric. characters...'); return false; } } var dotCount=0; for(i=0;i<fieldValue.length;i++) { if (fieldValue.charAt(i)=='.') dotCount++; } if (dotCount >1) { alert('Invalid field..contains more than one decimal chars'); return false; } else if(dotCount==1) { // Check for max. precision <=2 // GetIndex of '.' if ((fieldValue.length - fieldValue.indexOf('.') ) > 3) { alert('Limit precision to Max. 2 chars'); return false; } } return true; }
The following was submitted by Alex Ivetic
Using regular expressions to test for valid numbers:
function isValidNumber(num){ // regular expression to test if field contains alpha // expand accordingly to include any other non numeric character isAlpha = /[(A-Z)|(a-z)]/ ; if( isAlpha.test(num)) { // not a number, return 0 return 0; } // num is a number, return 1 return 1; }