2016-06-10 36 views
-1

我发现这个小提琴http://jsfiddle.net/LpdQm/16/并尝试设置两个可能的密码,如:如何让两个密码

$("#b").click(function() { 
    var password = "password"; 
    var password2 = "mouse"; 
    var dog = $("#pass").val(); 
    var mouse = $("#pass").val(); 
    if (dog !== password || mouse !== password2) { 
    $("#err").text("Incorrect password"); 
    } else { 
    $("#err").text("Password correct! Do whatever you need to do here."); 
    } 
}); 

,但它不工作。我该如何解决它?

+0

你的狗变量引用相同的$(“通行证”) - 对象,然后将鼠标变量 – Flo

+1

你的代码说,你的密码是无效的,如果它不等于“密码”或不等于“鼠标“,因此如果它等于”密码“和”鼠标“,则同时有效。 –

+0

http://jsfiddle.net/LpdQm/118/ –

回答

1

与您在文章中提到的评论者一样,您的解决方案存在一些缺陷。我重新为你写了这个。只需将您想要的密码添加到数组中即可。

$("#b").click(function() { 
    var passwords = ["password", "dog"]; // All the passwords you want to accept. 

    if(passwords.indexOf($("#pass").val()) === -1) { 
     $("#err").text("Incorrect password"); 
    } 
    else { 
     $("#err").text("Password correct! Do whatever you need to do here."); 
    } 
}); 

http://jsfiddle.net/LpdQm/113/
如果这是你想要的答案,按左边的绿色的勾。

+1

同意,阵列是要走的路。你不想手工列举每一种可能性。 'indexOf'是一种更智能的解决方案。 –

+0

@JeremyThille,正是我在想什么。并不是说他们想要接受100万个密码,所以性能不是问题。 – wot

0

正如@Ken Y-N指出的,问题是OR条件。

if (dog !== password || mouse !== password2) 

即使mouse具有有效的值,它将不会被检查,因为,dog不等于password

你可以尝试这样的事情:

if(!(dog === password || mouse === password2)){ ... } 

而且狗和鼠标将保持相同的值。所以最好有1个变量。

JSFiddle