Javascript 检查密码匹配返回“;“密码匹配”;当两个字段都为空时
我正在制作一份注册表,我想检查用户在打字时是否有匹配的密码,并给他适当的信息。到目前为止,一切正常,除了以下几点:Javascript 检查密码匹配返回“;“密码匹配”;当两个字段都为空时,javascript,jquery,passwords,Javascript,Jquery,Passwords,我正在制作一份注册表,我想检查用户在打字时是否有匹配的密码,并给他适当的信息。到目前为止,一切正常,除了以下几点: 当用户从“确认密码”字段中删除所有内容时,它仍然 给他一条“密码不匹配”的信息,而我想给他 没有消息或显示“请确认密码”的消息 当 用户删除这两个字段中的所有内容,它会给他一条消息 “密码匹配”,但它应该不会给他任何信息 这是我的密码: $(function () { $("#txtNewPassword").keyup(checkPasswordMatch); $
- 当用户从“确认密码”字段中删除所有内容时,它仍然 给他一条“密码不匹配”的信息,而我想给他 没有消息或显示“请确认密码”的消息
- 当 用户删除这两个字段中的所有内容,它会给他一条消息 “密码匹配”,但它应该不会给他任何信息
$(function () {
$("#txtNewPassword").keyup(checkPasswordMatch);
$("#txtConfirmPassword").keyup(checkPasswordMatch);
});
function checkPasswordMatch() {
$("#divCheckPasswordMatch").html("");
var password = $("#txtNewPassword").val();
var confirmPassword = $("#txtConfirmPassword").val();
if (password == "" && confirmPassword == ""){
$("#divCheckPasswordMatch").html("");
$("#divIsPasswordExist").html("");
}
else if (password != "" && confirmPassword == "") {
$("#divCheckPasswordMatch").html("");
}
else if (password == "" && confirmPassword != "")
$("#divIsPasswordExist").html("Password cannot be empty!");
else
$("#divIsPasswordExist").html("");
if (password != confirmPassword)
{
$("#divCheckPasswordMatch").removeClass("registrationFormConfirm");
$("#divCheckPasswordMatch").addClass("registrationFormAlert");
$("#divCheckPasswordMatch").html("Passwords do not match!");
}
else
{
$("#divCheckPasswordMatch").removeClass("registrationFormAlert");
$("#divCheckPasswordMatch").addClass("registrationFormConfirm");
$("#divCheckPasswordMatch").html("Passwords match.");
}
}
有什么想法吗?
谢谢大家! 这是因为当您设置var password=$(“#txtNewPassword”).val()时,if(password!=confirmPassword)
为false,因为两者都是空的
和var confirmPassword=$(“#txtConfirmPassword”).val()代码>这两者都相等。您应该在检查值是否为空后添加一个返回,这样当用户删除文本时,它就不会检查第一个check语句下面的任何内容
//第一张支票
if (password == "" && confirmPassword == ""){
return false;
}
。。。代码的其余部分这是因为当您设置var password=$(“#txtNewPassword”).val()时,if(password!=confirmPassword)
为false,因为两者都是空的
和var confirmPassword=$(“#txtConfirmPassword”).val()代码>这两者都相等。您应该在检查值是否为空后添加一个返回,这样当用户删除文本时,它就不会检查第一个check语句下面的任何内容
if (password == "" && confirmPassword == ""){
return false;
}
....
....
if(confirmPassword != "")
$("#txtConfirmPassword").html("Please confirm password");
if (password != confirmPassword)
{
$("#divCheckPasswordMatch").removeClass("registrationFormConfirm");
$("#divCheckPasswordMatch").addClass("registrationFormAlert");
$("#divCheckPasswordMatch").html("Passwords do not match!");
}
else
{
$("#divCheckPasswordMatch").removeClass("registrationFormAlert");
$("#divCheckPasswordMatch").addClass("registrationFormConfirm");
$("#divCheckPasswordMatch").html("Passwords match.");
}
...
...
//第一张支票
if (password == "" && confirmPassword == ""){
return false;
}
。。。代码的其余部分有一种更优雅的方法可以做到这一点。把你的条件改成这个
if (password == "" && confirmPassword == ""){
return false;
}
....
....
if(confirmPassword != "")
$("#txtConfirmPassword").html("Please confirm password");
if (password != confirmPassword)
{
$("#divCheckPasswordMatch").removeClass("registrationFormConfirm");
$("#divCheckPasswordMatch").addClass("registrationFormAlert");
$("#divCheckPasswordMatch").html("Passwords do not match!");
}
else
{
$("#divCheckPasswordMatch").removeClass("registrationFormAlert");
$("#divCheckPasswordMatch").addClass("registrationFormConfirm");
$("#divCheckPasswordMatch").html("Passwords match.");
}
...
...
if(password.length > 0 && confirmPassword.length >0) {
if(password == confirmPassword) {
//confirmed
} else {
// not confirm
}
} else {
//not entered
}
有一种更优雅的方法可以做到这一点。把你的条件改成这个
if(password.length > 0 && confirmPassword.length >0) {
if(password == confirmPassword) {
//confirmed
} else {
// not confirm
}
} else {
//not entered
}
我认为return
有助于你给出正确的信息并从特定的地方返回,而不是执行整个代码。与问题没有直接关系,但是你可能对检测HTML5事件感兴趣,而不是onKeyUp
。我认为return
有助于你给出正确的消息并从特定的位置返回,而不是执行整个代码。这与问题没有直接关系,但是您可能对检测HTML5事件感兴趣,而不是onKeyUp
。