2012-05-18 98 views
0

兩個輸入的密碼應該是相同的,我想在它們不匹配時顯示通知。目標是在鍵入時顯示通知,而不是在按下保存按鈕後顯示。兩個密碼字段的jQuery驗證

我是JavaScript新手,我也嘗試過函數名函數()表示法。

以下JS:

function updateError (error) { 
if (error == true) { 
    $(".error").hide(500); 
}else{ 
$(".error").show(500); 
} 
}; 

function checkSame() { 
    var passwordVal = $("input[name=password-check]").val(); 
    var checkVal = $("input[name=password]").val(); 
    if (passwordVal == checkVal) { 
    return true; 
    } 
    return false; 
}; 


document.ready(function(){ 
$("input[name=password-check]").keyup(function(){updateError(checkSame());}); 
$("input[name=password]").keyup(function(){updateError(checkSame());}); 
}); 

和HTML:

@Html.Password("password") 
@Html.Password("password-check")  
<span class="error">Errortext</span> </td></tr> 

,但它不工作.. THX!

編輯: 現在我已經改變了JS代碼:

$( 「輸入[名稱=密碼檢查]」)KEYUP(函數(){updateError(checkSame());}) ; (「input [name = password]」)。keyup(function(){updateError(checkSame());});

- >現在的作品,但只有一次,用戶輸入匹配密碼後,驗證停止工作

解決,問題是報價:

$("input[name='password-check']").keyup(function(){updateError(checkSame());}); 
$("input[name='password']").keyup(function(){updateError(checkSame());}); 
+1

好。但問題是什麼? – VisioN

+0

沒有任何反應,如果我更改密碼.. – MemLeak

回答

1

你正在做相反

if (error == true) { 
    $(".error").show(500); 
}else{ 
 $(".error").hide(500); 
} 

按照註釋編輯:

嘗試將名稱放在引號中l ike

$("input[name='password-check']").keyup(function(){updateError(checkSame());}); 
$("input[name='password']").keyup(function(){updateError(checkSame());}); 
+0

非常感謝你,問題在引用! – MemLeak

+0

很高興你的工作:) – mprabhat

0

在checkSame中,您可能希望使用indexOf來檢查passwordVal是否包含checkVal,因爲在輸入時密碼不相等。

if (passwordVal.indexOf(checkVal)>-1 || checkVal.indexOf(passwordVal)>-1 ) { 
    return true; 
    } 
+0

請注意,indexOf不支持任何地方:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf –

0

正如int2000所說,在keyup上啓動checkSame似乎很奇怪,但如果它是你想要的,那麼確定。 嘗試改變你的checkSame功能如下:

function checkSame() { 
    var passwordVal = $("input[name=password-check]").val(); 
    var checkVal = $("input[name=password]").val(); 
    if (passwordVal == checkVal) { 
    return false; 
    } 
    return true; 
}; 

記住,你傳遞的結果checkSame到updateError,所以如果密碼是相同的,你有沒有錯誤。