1

次のコードがあります。

    else if($page == 'two'){
        $('[name^=q1\\[\\]] option:selected').each(function() {
            if ($(this).val() < 1) {
                $('#rq1').addClass('hovered_error');
                $('#mandall').css("background-color","#901F39");
                $('#mandall').css("color","#FFF");
                return false;
            }
        });
    }

.val が 1 未満の場合、クラスを追加し、ID #mandall の css を変更して、クエリを停止する必要があります。

実際に起こっていることは、クラスを追加して #mandall の css を変更し、フォームを送信し続けることです。

4

2 に答える 2

4

return false;ループ内から呼び出すと、.each()実際にはループから抜け出しているだけです.each

フォームの送信を停止するにreturn false;は、外部のどこかを呼び出す必要があります。.each

var doSubmit = true;
$('[name^=q1\\[\\]] option:selected').each(function() {
        if ($(this).val() < 1) {
          doSubmit = false;
          return false;
        }
});
if(!doSubmit) return false;
于 2013-09-07T12:21:05.873 に答える
3

これは、コールバック メソッド ( ) から値を返しているためです。これはeach、呼び出し元メソッド (送信コールバック) からの戻りにはなりません。

else if($page == 'two'){
    var valid = true;
    $('[name^=q1\\[\\]] option:selected').each(function() {
        if ($(this).val() < 1) {
            $('#rq1').addClass('hovered_error');
            $('#mandall').css("background-color","#901F39");
            $('#mandall').css("color","#FFF");
            valid = false;
            return false;
        }
    });
    if(!valid){
        returnf false;
    }
}
于 2013-09-07T12:21:19.250 に答える