2016-06-10 59 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