Javascript onclick 表单验证
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6215560/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Javascript onclick form validation
提问by Hyman
Can someone tell me what I am doing wrong over here.. Its printing out alert when I put character like abc but when I have valid number its not saving...
有人能告诉我我在这里做错了什么..当我输入像 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();" >
回答by Alex Netkachov
Pay attention to the statement start and end - the "return false;" will terminate the "for" loop on the first iteration.
注意语句开始和结束——“return false;” 将在第一次迭代时终止“for”循环。
Correct code:
正确代码:
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;
}
回答by niksvp
format your if
correctly, else it will consider only first statement.
格式if
正确,否则它只会考虑第一个语句。
for(var i = 0; i < val.length; i++) {
if(validChars.indexOf(val.charAt(i)) == -1)
{
alert('Please enter valid number');
return false;
}
}
回答by Eric
Use regular expressions!
使用正则表达式!
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;
}
}
However, that regex allows 1.22.3.6...2
as an input, which is probably not desired. You probably want to have the regex ^(\d+(\.\d+)?|\.\d+)$
但是,该正则表达式允许1.22.3.6...2
作为输入,这可能是不希望的。你可能想要正则表达式 ^(\d+(\.\d+)?|\.\d+)$
Also, HTML tags should be lower case, and attributes should be quoted:
此外,HTML 标签应该是小写的,并且属性应该被引用:
<input type="number" id="tbNumber" />
<input type="submit" name="action" value="Save Changes" onclick="return validateNumeric();" />