我需要检查所有输入以查看是否已填充,在这种情况下,提交按钮将变为可按下状态,并且用户可以安全地提交其数据:

unfilled = false;
$('.add-field').keypress(function(){
    $('.add-field').each(function(){
        if($(this).val() === ''){
            unfilled = true;
        } else {
            unfilled = false;
        }
    })
    console.log(unfilled);
});


这段代码有效,但是却有一个奇怪的变化。当最后一个空输入获得一个字符时,它仍返回true。如果输入获得另一个字符,则只有该字符会返回false。我对此感到困惑,因为我知道在添加字符并更新输入值之后会触发.each()函数。因此,我不明白为什么它不注册该值。

最佳答案

您可以使用filter并使用keyup事件代替del键:

DEMO

$('.add-field').keyup(function () {
    var unfilled = !! $('.add-field').filter(function () {
        return $.trim(this.value) === ""
    }).length;
    console.log(unfilled);
});

10-04 22:47