4
$(document).ready(function() {

    $('#commentForm').submit(function(){

        return $('input[type=text], textarea').each(function(index){

            if($(this).attr('value') == ""){
                alert(msgHash[$(this).attr('id')]);
                return false;

            }else{

                if(!$(this).attr('value').match(validateHash[$(this).attr('id')])){
                    //Do nothing
                    alert(msgOnError[$(this).attr('id')]);
                    return false;
                }
            }
        });

        return true;
    });
});

ここで、msgOnError、msgHash、および msgHash は、特定の ID を持つ各テキスト ボックスのメッセージを取得するために使用するマップです。残念ながら、各メソッドはフォームの送信をキャンセルするために false を返しません。私は何を間違っていますか?? 私はjQueryが初めてです、ありがとう

4

1 に答える 1

13

はい、まさにその通りeachです。実際には、各反復で無名関数を呼び出すループであるため、これらの関数を終了しても、呼び出し元の関数も終了しません。ここで true と false を返すことは、実際には それぞれ for ループのcontinueandに対応しています。break

ブール値フラグを設定し、false (ブレーク) を返し、その後にブール値フラグの値を返す必要があります。each

于 2009-12-14T10:50:10.183 に答える