can someone tell me what i am doing wrong here.. i am not getting invalid number alert when i enter 1 1 0r a
function validateNumeric() {
var old_val = document.getElementById("tbNumber").value;
var new_val = old_val.replace(/^\s+|\s+$/g,"");
var validChars = '0123456789.';
for(var i = 0; i < val.lengt开发者_运维问答h; i++){
if(validChars.indexOf(new_val.charAt(i)) == -1){
alert('Please enter valid number');
return false;
} else {
document.getElementById("tbNumber").value = new_val;
}
}
return true;
}
In your for
loop test, you're referencing a variable val
, which probably comes back as having a length of 0
, so your loop will never do anything and the function will simply return true. I'm guessing your for
loop should actually look like:
for(var i = 0; i < new_val.length; i++){
...
}
There is a much simpler solution: use a regular expression.
Your valid characters are the digits 0 -9, including a decimal point, correct? Well, the RegEx for that is \d. Therefore, this would check if the value entered is numeric:
(/\d/).test( myValue );
Therefore, your code just needs to use the RegEx instead of an expensive loop.
function validateNumeric(){
var x = document.getElementById('foo');
var y = x.value.replace(/^\s+|\s+$/g,'');
var DIGITS = (/\d/); // Uppercase because this is a constant value
if (!DIGITS.test( y )){
alert('Please enter a valid number.');
return false;
} else {
x.value = y;
return true;
}
}
精彩评论