0

すべての入力が入力されているかどうかを確認する必要があります。入力されている場合、送信ボタンが押せるようになり、ユーザーはデータを安全に送信できます。

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

このコードは機能しますが、奇妙なひねりがあります。最後の空の入力が文字を取得するため、それでも を返しますtrue。入力が別の文字を取得した場合にのみ、 が返されfalseます。.each()文字が追加され、入力の値が更新された後に関数が起動されることを理解しているため、これに混乱しています。したがって、なぜその値が登録されないのかわかりません。

4

4 に答える 4

2

ループに入る前に に設定する必要unfilledがあります (ただし、 の内側)。falsekeyup

ループでは、フィールドが空の場合にのみ設定unfilledし、再度設定しないでください。そうしないと、最後のフィールドが入力されているかどうかだけがわかります。truefalse

于 2013-06-27T11:41:30.870 に答える
1

フィルターを使用して、del キーの代わりに keyup イベントを使用できます。

デモ

$('.add-field').keyup(function () {
    var unfilled = !! $('.add-field').filter(function () {
        return $.trim(this.value) === ""
    }).length;
    console.log(unfilled);
});
于 2013-06-27T11:47:39.457 に答える