4

次のコードがあります。

$('#btnSave').click(function (e) {
    $("input:text").each(function (index, value) {
        var el = $(this);
        if (el.val().length == 0) { el.css('border', '1px solid red') }
        return false;
    });
});

ここでは、すべての入力テキスト要素が動的に作成されるため、それらが空かどうかを検証することはできません..

.on()を使用するにはどうすればよい.each()ですか? 私は運が悪い..事前に感謝..

4

2 に答える 2

4

あなたのコードはほとんど問題ありませんが、return false;. .each()最初の入力がヒットした後、ループを停止します。

jsFiddle の例

于 2012-09-07T17:29:59.737 に答える
2

ページをクリックしたときに要素がページ上にない場合を除いて、問題はないはずです。また、returnfalseを返すためです。フィールドが空の場合、最初のテキストボックスのみに境界線が表示されます。他のテキストボックスは、空の場合でも省略されます。

これを試して

​$(function() {
    $('#btn1').on('click' , function() {
        var inp = '';
        for(var i=1;i< 6;i++){
           inp += '<input type="text" id="txt' + i + '"/>'
        }   
        $('.textboxes').append(inp);

       var isError = false;
       $("input:text").each(function (index, value) {
            var el = $(this);
            if (el.val() == '') { 
               el.addClass('error');
               isError = true;
            }
        });

            if(isError){return false;}    
    });    

});​

この作業例も確認してください... FIDDLE

于 2012-09-07T17:40:29.970 に答える