有人可以告诉我我在这里做错了什么..当我输出像abc这样的字符时它的打印警告但是当我有有效数字时却没有保存......
function ValidateNumeric() {
var val = document.getElementById("tbNumber").value;
var validChars = '0123456789.';
for(var i = 0; i < val.length; i++) {
if(validChars.indexOf(val.charAt(i)) == -1)
alert('Please enter valid number');
return false;
}
return true;
}
<INPUT TYPE=SUBMIT NAME="action" VALUE="Save Changes" onclick="return ValidateNumeric();" >
答案 0 :(得分:6)
注意语句的开始和结束 - “返回错误”;将在第一次迭代时终止“for”循环。
正确的代码:
function ValidateNumeric() {
var val = document.getElementById("tbNumber").value;
var validChars = '0123456789.';
for(var i = 0; i < val.length; i++) {
if(validChars.indexOf(val.charAt(i)) == -1) {
alert('Please enter valid number');
return false;
}
}
return true;
}
答案 1 :(得分:4)
正确格式化if
,否则只考虑第一个语句。
for(var i = 0; i < val.length; i++) {
if(validChars.indexOf(val.charAt(i)) == -1)
{
alert('Please enter valid number');
return false;
}
}
答案 2 :(得分:2)
使用正则表达式!
function validateNumeric() {
var val = document.getElementById("tbNumber").value;
var regex = /^[0-9\.]+$/;
if(regex.test(value))
return true
else {
alert("Please enter a valid number");
return false;
}
}
但是,该正则表达式允许1.22.3.6...2
作为输入,这可能是不希望的。您可能希望使用正则表达式^(\d+(\.\d+)?|\.\d+)$
此外,HTML标记应为小写,并且应引用属性:
<input type="number" id="tbNumber" />
<input type="submit" name="action" value="Save Changes" onclick="return validateNumeric();" />