2011-02-17 101 views
2

我有一段密码匹配的代码。我想在输入确认密码字段时验证每个带有密码字段的字符。匹配密码

var npass = $('#password'); 
    var rpass = $('#confirmpassword'); 
    if(npass.val() != rpass.val()) { 
     Val.errors = true; 
     Val.showerrors = true; 
     $("#confirmpasswordError").html("must match"); 
     $("#confirmpasswordError").addClass('error-Yes-msg').show(); 
     $("#confirmpassword").addClass('error-input'); 
     return false; 
    } else { 
     $("#confirmpasswordError").removeClass('error-msg').html(''); 
     $("#confirmpassword").removeClass('error-input'); 
    } 
+0

有没有在代码中的一些错误?你没有得到你期望的结果吗?你在看什么? – 2011-02-17 14:25:39

回答

0

好像你应该这样的代码只是绑定到$("#confirmpassword").keydown()

0

你的问题很模糊。代码中有一些错误吗?你没有得到你期望的结果吗?你在看什么?前提是你的密码字段真的有id值(不是名称)“密码”和“confirmpassword”,并提供了他们input元件或类似的,那么从根本上说应该工作,除了:

  1. 你返回false当他们不匹配时,但他们没有返回true(至少,不在您的引用代码中)。所以,如果这是你调用的函数,并且你正在检查返回值,那么你将会看到一个错误的值。
  2. 当他们不匹配时,您正在添加类error-Yes-msg,但在他们执行操作时不会删除它(您正在删除error-msg)。
  3. 当您匹配时,您不会清除Val.errorsVal.showerrors

应对那些,做了一下整理的:

var npass = $('#password'); 
var rpass = $('#confirmpassword'); 
var match = npass.val() == rpass.val(); 
Val.errors = Val.showerrors = !match; 

if(match) { 
    $("#confirmpasswordError").removeClass('error-Yes-msg').html(''); 
    $("#confirmpassword").removeClass('error-input'); 
} else { 
    $("#confirmpasswordError") 
     .html("must match") 
     .addClass('error-Yes-msg').show(); 
    $("#confirmpassword").addClass('error-input'); 
} 
return match; 
2

你明白了。你只需要将它绑定到框的keyup/keydown事件。

现场演示:http://jsfiddle.net/FPNBe/2/

$('#password, #confirmpassword').keyup(function() { checkPass(); }); 


function checkPass(){ 
    var rpass = $('#confirmpassword').val(); 
    var npass = $('#password').val(); 
    if(npass!= rpass) { 
     //Val.errors = true; 
     //Val.showerrors = true; 
     $("#confirmpasswordError").html("must match"); 
     //$("#confirmpasswordError").addClass('error-Yes-msg').show(); 
     //$("#confirmpassword").addClass('error-input'); 
     return false; 
    } else { 
     $("#confirmpasswordError").html("match!"); 
     //$("#confirmpasswordError").removeClass('error-msg').html(''); 
     //$("#confirmpassword").removeClass('error-input'); 
    } 
} 
0

这似乎像.keyup()/.keydown()会的工作,但它有点棘手有时。所以,试试Zurb的this plugin。它像一个魅力。

现在,你的代码应该是这样的:

var npass = $('#password'); 
var rpass = $('#confirmpassword'); 

rpass.bind('textchange', function (event, previousText) { 
    if(npass.val() != rpass.val()) { 
     Val.errors = true; 
     Val.showerrors = true; 
     $("#confirmpasswordError").html("must match"); 
     $("#confirmpasswordError").addClass('error-Yes-msg').show(); 
     $("#confirmpassword").addClass('error-input'); 
     return false; 
    } else { 
     $("#confirmpasswordError").removeClass('error-msg').html(''); 
     $("#confirmpassword").removeClass('error-input'); 
    } 
});