多个字段为空时启用和禁用提交按钮不起作用

时间:2014-05-27 01:55:19

标签: javascript jquery

我这里有启用和禁用提交按钮的脚本。我尝试使用每个功能但是没有工作。每个字段都有来自数据库的价值。如果其中一个字段为空,则不允许提交该进程。每个字段都有一个值,因为我用它来编辑窗口。任何帮助将不胜感激。感谢..

这是我的小提琴http://jsfiddle.net/cj6v8/

$(document).ready(function () {
    var saveButton = $("#save");
    var empty = true;
    $('input[type="text"]').change(function () {
        $('.inputs').each(function () {
            if ($(this).val() != "") {
                empty = false;
            } else {
                empty = true;
            }
        });

        if (!empty) {
            saveButton.prop("disabled", false);
        } else {
            saveButton.prop("disabled", true);
        }
    });
}); // END OF DOCUMENT READY

4 个答案:

答案 0 :(得分:0)

你需要初始化emptyfalse并且只有在循环中找到空输入时才更改它。 http://jsfiddle.net/cj6v8/1/

答案 1 :(得分:0)

问题是第一个else声明。

$('.inputs').each(...遍历您的字段时,empty变量会为每个输入字段重新分配一个新值 。换句话说,就像你做的那样,只有最后一个字段才有意义。 (要测试它,请尝试这样做:将最后一个留空,并且无论您在前两个字段中放置什么,该按钮都将被禁用。)

相反,尝试在循环之前在empty初始化false(假设您的字段都填充了某些内容),然后,当您进行迭代时,只要遇到空字段,将empty设为true

var empty = false;
$('.inputs').each(function() {
    if($(this).val() == "")
        empty = true;
});

如您所见,我删除了有问题的else

答案 2 :(得分:0)

如果您不想在至少一个字段为空时提交,则需要执行以下操作:

....
var empty = true;
$('input[type="text"]').change(function () {
    empty = false;
    $('.inputs').each(function () {
        if ($(this).val() == "") {
            empty = true;
            break;
         }
    }
    ...

答案 3 :(得分:0)

每个都是异步的,http://jsfiddle.net/cj6v8/4/

$(document).ready(function() {
    var saveButton = $("#save");

    $('input[type="text"]').change(function() {
        var empty = true;
        var inputs = $('.inputs');
        inputs.each(function(i) {
            if ($(this).val().length == 0) {
                console.log($(this).val());
                empty = false;
            }
            if (i === inputs.length-1) saveButton.attr("disabled", !empty);
        });
    });
});// END OF DOCUMENT READY