Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 屏幕上显示隐藏元素时重新运行功能 我有一个函数,检查我的所有表单字段是否都已填写 在中,如果他们有,将删除“我的提交”上的禁用属性 按钮,并允许用户提交。_Javascript_Jquery_Html_Forms_Filter - Fatal编程技术网

Javascript 屏幕上显示隐藏元素时重新运行功能 我有一个函数,检查我的所有表单字段是否都已填写 在中,如果他们有,将删除“我的提交”上的禁用属性 按钮,并允许用户提交。

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

这是完美的,但是,我有一个字段,只有在 在页面上的某个下拉列表中选择了某个元素, 当此元素出现时,我会添加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();
试过了吗

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。