繁体   English   中英

如何在jQuery中查询多个条件或匿名函数的结果

[英]How to query multiple conditions or results of anonymous functions in jQuery

首先,我有一个包含多个输入字段和一些Bootstrap-Button的表单。 现在,我要检查的是是否满足两个条件(“是否已填写所有输入字段?”,“是否按下了至少一个按钮?”)以使用户能够单击“提交”按钮。

这是我的代码:

function checkInput() {
    var inputFields = $("input[name=inp1],[name=inp2],[name=inp3]");
    var buttons = $("button[name=btn1],[name=btn2],[name=btn3]");
    var empty1;
    var empty2;

    buttons.click(function() {
        if(!$(this).hasClass('active')) {
            empty1 = false;
        } else {
            empty1 = true;
        }
    });

    inputFields.keyup(function() {
        inputFields.each(function() {
        if($(this).val().length == 0) {
                empty2 = true;
            } else {
                empty2 = false;
            }
        });
    });

    alert(empty1);
    alert(empty2);

    if(empty1 == true && empty2 == true) {
        $('button[name=submitBtn]').prop('disabled', false);
    } else {
        $('button[name=submitBtn]').prop('disabled', true);
    }
}

alert(...)函数说, empty1empty2是“未定义的”,我可以理解。 但是我的问题是,如何从buttons.click()inputFields.keyup()检索true值或false值以在以后查询它们?

问题在于变量的范围,这些变量需要是全局的:

var empty1;
var empty2;

function checkInput() {
    var inputFields = $("input[name=inp1],[name=inp2],[name=inp3]");
    var buttons = $("button[name=btn1],[name=btn2],[name=btn3]");


    buttons.click(function () {
        if (!$(this).hasClass('active')) {
            empty1 = false;
        } else {
            empty1 = true;
        }
    });

    inputFields.keyup(function () {
        inputFields.each(function () {
            if ($(this).val().length == 0) {
                empty2 = true;
            } else {
                empty2 = false;
            }
        });
    });

    alert(empty1);
    alert(empty2);

    if (empty1 == true && empty2 == true) {
        $('button[name=submitBtn]').prop('disabled', false);
    } else {
        $('button[name=submitBtn]').prop('disabled', true);
    }
}

将其移出函数即可:在jsFiddle工作示例中查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM