我试图用这样的jQuery制作两个条件语句。
$('#user_name, #user_email, #user_password').keyup(function () {
if ($('#output-name').is('.field-output-comple') &&
$('#output-email').is('.field-output-comple') &&
$('#output-password').is('.field-output-comple') &&
$('#confirm-terms-of-use').is(':checked')
) {
$('#register-button').removeAttr('disabled');
} else {
$('#register-button').attr('disabled', 'disabled');
}
});
$('#confirm-terms-of-use').change(function() {
if ($('#output-name').is('.field-output-comple') &&
$('#output-email').is('.field-output-comple') &&
$('#output-password').is('.field-output-comple') &&
$('#confirm-terms-of-use').is(':checked')
) {
$('#register-button').removeAttr('disabled');
} else {
$('#register-button').attr('disabled', 'disabled');
}
});
但是你知道这段代码是重复的。
if ($('#output-name').is('.field-output-comple') &&
$('#output-email').is('.field-output-comple') &&
$('#output-password').is('.field-output-comple') &&
$('#confirm-terms-of-use').is(':checked')
) {
$('#register-button').removeAttr('disabled');
} else {
$('#register-button').attr('disabled', 'disabled');
}
所以我用这样的函数制作这段代码。
$('#user_name, #user_email, #user_password').keyup(isValidPassword())
$('#confirm-terms-of-use').change(isValidPassword())
function isValidPassword() {
if ($('#output-name').is('.field-output-comple') &&
$('#output-email').is('.field-output-comple') &&
$('#output-password').is('.field-output-comple') &&
$('#confirm-terms-of-use').is(':checked')
) {
$('#register-button').removeAttr('disabled');
} else {
$('#register-button').attr('disabled', 'disabled');
}
}
但它效果不佳。没有错误,但isValidPassword
可能不会输出任何内容。我哪里弄错了?谢谢你的阅读。
答案 0 :(得分:4)
您需要将函数引用传递给事件处理程序,您正在调用函数isValidPassword
并将其返回的值undefined
作为事件处理程序传递。
$('#user_name, #user_email, #user_password').keyup(isValidPassword)
$('#confirm-terms-of-use').change(isValidPassword)
答案 1 :(得分:3)
这不是你想的那样:
.keyup(isValidPassword())
这不会将isValidPassword
函数本身传递给keyup
,执行该函数并传递该函数的结果 。并且该函数不会返回任何内容,因此其结果为undefined
。
不要执行该函数,只需将函数本身作为变量传递:
.keyup(isValidPassword)