两个密码字段的 JQuery 验证

JQuery Validation for Two Password Fields

本文关键字:字段 JQuery 验证 密码 两个      更新时间:2023-09-26

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

我是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>

但它不起作用..感谢!

编辑:现在我已将JS代码更改为:

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

-

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

解决了,问题是引用:

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

你在做相反的事情

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());});

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

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

正如 int2000 所说,在 keyup 上触发 checkSame 似乎很奇怪,但如果这是你想要的,好吧。尝试更改您的支票相同功能,如下所示:

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

请记住,您正在将检查相同的结果传递给 updateError,因此如果密码相同,则没有错误。