1
<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;
}
}

我的脚本不工作,即使用户名、密码和电子邮件文本框已经定义了名称属性。谢谢 :)。

4

4 回答 4

2

getElementByName不是document对象的有效方法。您想要,它将返回具有指定属性的元素集合,或者将返回具有指定属性的单个元素。getElementsByNamenamegetElementById()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];
于 2010-06-07T10:12:09.257 回答
2

没有 DOM 方法“getElementByName”,您不妨考虑使用getElementByIdgetElementsByName

于 2010-06-07T10:15:20.573 回答
0

document.getElementByName('用户名'); 返回名称为用户名的数组或元素...所以也添加索引...即 document.getElementByName('username')[0];

它应该是这样的:

var username = document.getElementByName('username')[0];
var password = document.getElementByName('password')[0];
var email = document.getElementByName('email')[0];
于 2010-06-07T10:10:00.993 回答
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。

于 2010-06-07T10:23:07.467 回答