Javascript 屏幕上显示隐藏元素时重新运行功能 我有一个函数,检查我的所有表单字段是否都已填写 在中,如果他们有,将删除“我的提交”上的禁用属性 按钮,并允许用户提交。
这是完美的,但是,我有一个字段,只有在 在页面上的某个下拉列表中选择了某个元素, 当此元素出现时,我会添加validate类,如下所示:Javascript 屏幕上显示隐藏元素时重新运行功能 我有一个函数,检查我的所有表单字段是否都已填写 在中,如果他们有,将删除“我的提交”上的禁用属性 按钮,并允许用户提交。,javascript,jquery,html,forms,filter,Javascript,Jquery,Html,Forms,Filter,这是完美的,但是,我有一个字段,只有在 在页面上的某个下拉列表中选择了某个元素, 当此元素出现时,我会添加validate类,如下所示: if (job.value === "OTHER") { $('#inputOtherJobFunction').parent().show(); $('#inputOtherJobFunction').addClass('validate'); } else { $('#inputOtherJobFunction').removeCl
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();
试过了吗
if (job.value === "OTHER") {
$('#inputOtherJobFunction').parent().show();
$('#inputOtherJobFunction').addClass('validate');
checkFields();
} else {
$('#inputOtherJobFunction').removeClass('validate);
}
编辑:
通过你的评论来理解你的需求,我想试着把这个方法附加到相关的事件中
$fieldsToCheck.on('focus blur change', checkFields);
您的案例可能需要聚焦和模糊只需再次调用checkFields;当你需要的时候。我试过这个,我认为它更多的是在$fieldsToCheck.blur下,我认为也许blur是错误的使用,但我不确定它是否适用于每一种情况,除非我在下拉列表中选择给我新字段的元素,如果我清除出现的文本框,我必须在另一个输入框中单击,直到按钮未被禁用,是否还有其他东西可以输入?@NickPocock基本上每个输入事件,例如按键、按键。虽然在您的情况下,听起来您需要在selectbox上附加change event listener,并执行您想要的操作,即在回调中调用checkFields。