这很完美,但是,我有一个只出现的字段 在页面的其中一个下拉列表中选择某个元素, 当这个元素出现时,我就像这样添加validate类:
if (job.value === "OTHER") {
$('#inputOtherJobFunction').parent().show();
$('#inputOtherJobFunction').addClass('validate');
} else {
$('#inputOtherJobFunction').removeClass('validate);
}
然后我在我的函数中再次分配$ fieldsToCheck变量,因此它现在在屏幕上包含新的表单元素。
屏幕上出现这个新元素后,当我点击另一个输入框并输入内容时,禁用的按钮才会激活。
我想我每次在表单上输入任何内容时都需要触发此功能,但我不太确定。
let $registerButton = $('.create-account-button');
let $fieldsToCheck = $('.registration-form .validate');
let checkFields = function () {
$fieldsToCheck = $('.registration-form .validate');
console.log('being called');
let emptyFields = $fieldsToCheck.map(function () {
return this.value;
}).get().filter(function (val) {
return val.length === 0;
});
$registerButton.prop('disabled', !!emptyFields.length);
};
$fieldsToCheck.blur(checkFields);
checkFields();
答案 0 :(得分:1)
试过了吗?
if (job.value === "OTHER") {
$('#inputOtherJobFunction').parent().show();
$('#inputOtherJobFunction').addClass('validate');
checkFields();
} else {
$('#inputOtherJobFunction').removeClass('validate);
}
编辑: 通过评论了解您的需求我会尝试将该方法附加到相关事件中。
$fieldsToCheck.on('focus blur change', checkFields);
您的情况可能只需要focus
和blur