[英]Why is my Javascript validation not working?
<script type='text/javascript'>
function formValidator(){
// Make quick references to our fields
var username = document.getElementByName('username');
var password = document.getElementByName('password');
var email = document.getElementByName('email');
// Check each input in the order that it appears in the form!
if(isAlphanumeric(username, "Please only use letters and numbers for you username.")){
if(lengthRestriction(username, 8, 12)){
if(lengthRestriction(password, 6, 15)){
if(emailValidator(email, "Please enter a valid email address")){
return true;
}
}
}
}
return false;
}
function isAlphanumeric(elem, helperMsg){
var alphaExp = /^[0-9a-zA-Z]+$/;
if(elem.value.match(alphaExp)){
return true;
}else{
alert(helperMsg);
elem.focus();
return false;
}
}
function lengthRestriction(elem, min, max){
var uInput = elem.value;
if(uInput.length >= min && uInput.length <= max){
return true;
}else{
alert("Please enter between " +min+ " and " +max+ " characters");
elem.focus();
return false;
}
}
function emailValidator(elem, helperMsg){
var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
if(elem.value.match(emailExp)){
return true;
}else{
alert(helperMsg);
elem.focus();
return false;
}
}
即使用户名,密码和电子邮件文本框已定义name属性,我的脚本也无法正常工作。 谢谢 :)。
getElementByName
不是document
对象的有效方法。 您需要getElement s ByName
,它将返回具有指定name
属性的元素集合,或getElementById()
,它将返回具有指定id
属性的单个元素。
// get the first element with name="username"
var username = document.getElementsByName('username')[0];
// get the first element with name="password"
var password = document.getElementsByName('password')[0];
// get the first element with name="email"
var email = document.getElementsByName('email')[0];
没有DOM方法“getElementByName”,您可能希望考虑使用getElementById
或getElementsByName
document.getElementByName( '用户名'); 返回数组或名称为username的元素...所以也添加索引...即document.getElementByName('username')[0];
应该是这样的:
var username = document.getElementByName('username')[0];
var password = document.getElementByName('password')[0];
var email = document.getElementByName('email')[0];
该方法称为getElementsByName
(请注意代码中缺少的s ),并且如复数形式所示,它返回一个包含所有匹配元素的数组。 如果每个名称只有一个项目,则只需从数组中获取第一个项目即可。
现在,此方法返回DOM节点。 如果您不知道节点是什么,只需将其视为HTML标记即可。 您无法验证标记,您需要提取其value
属性。
这些更改将反映如下(没有错误检查):
var username = document.getElementByName('username')[0].value;
var password = document.getElementsByName('password')[0].value;
var email = document.getElementsByName('email')[0].value;
建议您找到浏览器的JavaScript控制台,以便获得有关语法错误的通知,或者甚至更好地使用Firefox + Firebug。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.