两个密码字段的JQuery验证

时间:2012-05-18 14:00:54

标签: javascript jquery

两个输入的密码应该相同,我想在匹配时显示通知。目标是在键入期间显示通知,而不是在按下保存按钮后显示。

我是javascript的新手,我也尝试过functionname function()表示法。

跟随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());})。  $( “输入[名=密码]”)KEYUP(函数(){updateError(checkSame());});

- &GT;现在它可以工作,但只有一次,在用户输入匹配的密码后,验证停止工作

解决了,问题是引用:

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

3 个答案:

答案 0 :(得分:1)

你正在做相反的事情

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

根据评论进行编辑:

尝试将名称放在引号中,如

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

答案 1 :(得分:0)

在checkSame中,您可能希望使用indexOf来检查passwordVal是否包含checkVal,因为在键入时,密码尚不相等。

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

答案 2 :(得分: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,因此如果密码相同则没有错误。