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

标签 javascript jquery twitter-bootstrap

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

这是我的代码:

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() 检索 truefalse 之后查询它们?

最佳答案

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

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 working example

关于javascript - 如何在jQuery中查询匿名函数的多个条件或结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433975/

相关文章:

jQuery 循环 : Custom Pagination with Previous & Next Buttons

javascript - 对话框中的多行标题?

javascript - .html() 失去 Angular 范围

Javascript 对嵌套在数组中的字符串中的数字求和

javascript - 如何正确向文本区域添加双引号

javascript - 当循环为真时 iDangero.us Swiper 幻灯片计数

javascript - 使用 .text() 的 jquery 能够更改 Bootstrap 类第一个跨度但不能更改第二个跨度

CSS - 更改 Bootstrap 导航栏上按钮的位置

twitter-bootstrap - Twitter Bootstrap - 折叠时,导航栏选项不会变成显示选项的按钮

javascript - 如何通过 socket.io 将 Node js 后端上的 Set 发送到前端?