2012-04-14 77 views
-2

在第一个块中,我确保密码不包含“密码”。它完美的作品。Javascript - 使用indexOf搜索字符串

var element=document.getElementById('password'); 
    if (element.value.toLowerCase().indexOf('password') > -1){ //returns 0 or more if present 
    alert('Password may not contain the word `password`.'); 
    element.focus(); 
    return false; 
    } 

在第二个块中,我检查密码不包含名字,它不起作用,我做错了什么?

//stop password of firstname 
    var element=document.getElementById('password'); 
    var firstname=document.getElementById('firstname'); 
    if (element.value.toLowerCase().indexOf(firstname.value) > -1){ //returns 0 or more if present 
    alert('Password may not contain the firstname.'); 
    element.focus(); 
    return false; 
    } 
+6

您是否忘记了firstname.value上的.toLowerCase(),然后由于套管的不同而导致测试失败? – AHM 2012-04-14 22:37:05

+0

是的,这是问题,谢谢 – davidjhp 2012-04-14 22:41:15

+0

-2为盲?真??我在20多年的职业生涯中犯过同样的错误。有时候所需要的只是第二套眼睛。现在我超过40岁了,我需要第二组眼睛的原因不同...... :) – 2012-04-14 23:42:31

回答

3

你忘了小写的第一个名字:

// stop password of firstname 
var element = document.getElementById('password'); 
var firstname = document.getElementById('firstname'); 
if(element.value.toLowerCase().indexOf(firstname.value.toLowerCase()) > -1) { //returns 0 or more if present 
    alert('Password may not contain the firstname.'); 
    element.focus(); 
    return false; 
}
+3

D'oh !! ........... – 2012-04-14 22:40:46

0

如果(。element.value.toLowerCase()的indexOf(firstname.value toLowerCase())> -1)

-1

也许这不是问题,但你可以使用underscore.string做同样的事情在一个非常容易和表达方式:

_.includes(element.value.toLowerCase(), firstname.value.toLowerCase())