两个输入的密码应该相同,我想在匹配时显示通知。目标是在键入期间显示通知,而不是在按下保存按钮后显示。
我是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());});
答案 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,因此如果密码相同则没有错误。