【发布时间】:2011-03-06 17:31:03
【问题描述】:
我正在运行一些函数来验证表单中用户输入的文本是否至少包含一个数字和字母。它似乎不起作用。由于这两个功能几乎相同,我只发布其中一个:
function hasALetter(textField){
//returns true or false based on whether or not the text field has at least one letter inside it
console.log("Checking for letters...");
var hasLetter = false;
for(var i=0, checkLength=textField.length; i<checkLength; i++){
var letter = textField.substr(i,1);
console.log("letter = " + letter);
if(isNan(letter) == false){
hasLetter = false;
}
}
if(hasLetter == true){
return true;
}
}
日志(“letter =” + letter)永远不会出现在我的控制台中。我可能遗漏了一些愚蠢的东西,但它似乎并没有完成功能。
作为参考,这是我调用函数的方式:
if(pwd.value.length > 9){
var pwdLetter = hasALetter(pwd);
var pwdNumber = hasADigit(pwd);
if(pwdLetter==true){
if(pwdNumber==true){
是的,我知道这很混乱,但我仍在学习。我确信有更高级/更简洁的方法来进行此验证,但出于我学习的目的,我现在正在这样做。
【问题讨论】:
-
天啊,这是怎么回事? 1) 使用
substr获取单个字符 2) isNaN 3) if(true) return true else return false 是不必要的 4) 在 return 语句后记录。这可以做得更好很多... -
@Harmen > 我确信它可以,但由于我还在我大学课程的第一个 Javascript 课程中,'substr' 是教授让我们使用的。另外,我以为我已经删除了“返回虚假”声明。 :P
-
@GnomeSlice: textField.charAt(i) 在那个位置返回一个字母; 'return hasLetter' 应该更好,没有条件语句 ;) ...
-
@GnomeSlice:你是否只检查 textField 是否有至少一个字母?
-
你用什么浏览器来调试这个?
标签: javascript validation forms