jquery验证无法使用变量

时间:2012-02-07 09:02:06

标签: jquery

我正在测试密码确认验证。 当我将此代码与变量一起使用时,它不起作用:

$(function() {
var pass1 = $("#reg-password").val(),
    pass2 = $("#reg-password2").val();
$("#reg-password2").blur(function(){
    if (pass1 != pass2){
        alert ('Doesnt Match');
    }
});
});

但这个有用吗,为什么?

$(function() {
$("#reg-password2").blur(function(){
    if ($("#reg-password2").val() != $("#reg-password").val()){
        alert ('Doesnt Match');
    }
});
});

6 个答案:

答案 0 :(得分:1)

因为在ready文档时分配了pass1和pass2变量的值。如果你想使用变量,请使用它

$(function() {
  $("#reg-password2").blur(function(){
    var pass1 = $("#reg-password").val(),
        pass2 = $("#reg-password2").val();
      if (pass1 != pass2){
        alert ('Doesnt Match');
      }
   });
});

答案 1 :(得分:1)

在第一个代码中,您的pass1pass2包含document ready的值,输入的所有更改都不会用于比较pass2时的模糊。

第二个代码,密码正在at the time that pass2 blurs,因此它可以正常工作。

答案 2 :(得分:0)

$(function() {
    $("#reg-password2").blur(function(){
        pass1 = $("#reg-password").val(),
        pass2 = $("#reg-password2").val();
        if (pass1 != pass2){
            alert ('Doesnt Match');
        }
    });
});

在第一个代码中,您在模糊之前获得值,在第二个代码中,您在模糊时获得它们

答案 3 :(得分:0)

这是因为在您编写

时,DOM中不存在输入字段
var pass1 = $("#reg-password").val(),
    pass2 = $("#reg-password2").val();

你可以将它放在onload或domReady事件中,然后你的第一个代码就可以了。

答案 4 :(得分:0)

是因为变量是指输入的初始值...并且在触发'blur'事件时进行验证。如果输入值发生变化,则应重新分配变量。

答案 5 :(得分:0)

你可以使用非常好的jQuery插件,它几乎可以进行任何类型的验证,它被称为jQuery插件验证(http://bassistance.de/jquery-plugins/jquery-plugin-validation/)。 我从开发开始就使用它,它功能强大且易于使用,如下所示:

function validateForm(myForm) {
    $('#'+myform).validate({rules: {
        name: {required:true},
        password: {required: true},
        repeat_password: {required: true, equalTo:"#password"}
    }});
}

只需传递字段的agruments名称/ id。如果需要,您还可以为必填字段定义自己的错误消息,否则默认消息是英文。