我正在尝试比较用户在尝试注册时输入的两个密码,但只要密码等于确认密码的密码仍然会引发错误密码不匹配。 如果没有输入密码则会有两个阶段,然后出现错误,但第二阶段比较两个密码,错误始终为真,并自我呈现。
if ($('#password').val() == "") {
$('.error').append("<li> Please enter a pasword </li>");
error = true;
} else if ($('#password') !== $('#password1')) {
$('.error').append("<li> You password does not match the confirmed password </li>");
error = true;
}
答案 0 :(得分:2)
在比较他们之间的密码时,您还必须使用.val()
:
else if ($('#password').val() !== $('#password1').val())
答案 1 :(得分:0)
您可以稍微改进一下代码以使其更快。您应该缓存dom查询并插入一次错误文本。是否存在错误取决于错误数组的空虚/非空虚。
var FormHandler = {
errors: [],
validate: function(){/*...function to run all validations */}
checkPassword: function(){
var pass = $('#password').val();
if (!pass || pass === "") {
this.errors.push("Please enter a pasword");
} else if (pass !== $('#password1').val()) {
this.errors.push("You password does not match the confirmed password");
}
this.printErrors(); // or continue to next form validation
},
//...more validation functions...
printErrors: function(){
if(this.errors.length){
$('.error').html("<ul><li>" + this.errors.join("</li><li>") + "</li></ul>");
}
},
}
可能看起来有点矫枉过正,但随着表单变得越来越长,验证越来越复杂,维护速度越来越快,也越来越容易。