我不確定是否誤解了True/False在Javascript中的工作方式。 在我的JQuery腳本下面我宣佈6個變量爲false。 如果正則表達式驗證條件是好的,那麼我重新聲明變量爲真。 底部是一個簡單的alert()告訴我什麼時候所有的變量都是真的。javascript如果變量爲真
驗證條件正在工作(刪除/添加類),但警報不顯示。這就是爲什麼我不確定我是否搞亂了真假部分。
$('#password1').keyup(function() {
var checkLength = false;
var checkLetter = false;
var checkCaps = false;
var checkNum = false;
var checkSymbol = false;
var checkSpace = false;
var pswd = $(this).val();
//validate the length
if(pswd.length < 6){
$('#length').removeClass('valid').addClass('invalid');
}else{
$('#length').removeClass('invalid').addClass('valid');
checkLength = true;
}
//validate letter
if(pswd.match(/[A-Za-z]/)){
$('#letter').removeClass('invalid').addClass('valid');
}else{
$('#letter').removeClass('valid').addClass('invalid');
checkLetter = true;
}
//validate capital letter
if(pswd.match(/[A-Z]/)){
$('#capital').removeClass('invalid').addClass('valid');
}else{
$('#capital').removeClass('valid').addClass('invalid');
checkCaps = true;
}
//validate number
if(pswd.match(/\d/)){
$('#number').removeClass('invalid').addClass('valid');
}else{
$('#number').removeClass('valid').addClass('invalid');
checkNum = true;
}
//validate symbols
if(pswd.match(/[^a-zA-Z0-9]/)){
$('#symbol').removeClass('invalid').addClass('valid');
}else{
$('#symbol').removeClass('valid').addClass('invalid');
checkSymbol = true;
}
//validate no spaces
if(pswd.match(/\s/)){
$('#spaces').removeClass('valid').addClass('invalid');
}else{
$('#spaces').removeClass('invalid').addClass('valid');
checkSpace = true;
}
// here is where I'm concerned I'm wrong
if(checkLength == true && checkLetter == true && checkCaps == true && checkNum == true && checkSymbol == true && checkSpace == true){
alert("All good");
}
});
有人會檢查我嗎?
*永遠不會寫'== true'。它幾乎總是多餘的,如果不是,你的腳本需要重構。 – 2012-08-08 15:18:51
你可以做一個jsfiddle嗎? – SomeKittens 2012-08-08 15:19:38
我想你剛剛得到了一些錯誤的條件。例如,如果密碼包含從'a'到'z'的任何字母,則不要將'checkLetter'設置爲'true'。 '.match'如果**不匹配,則返回'null'。 – 2012-08-08 15:20:54