我正在测试密码确认验证。 当我将此代码与变量一起使用时,它不起作用:
$(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');
}
});
});
答案 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)
在第一个代码中,您的pass1
和pass2
包含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。如果需要,您还可以为必填字段定义自己的错误消息,否则默认消息是英文。