0

私はフォームを持っていて、パーセントデータへのテキストフィールドが含まれています。送信をクリックすると、それぞれのクラスセレクターを使用してすべてのパーセントを検証し、無効なパーセントをチェックすると、それぞれとフォーカスフィールドが壊れますが、「returnfalse」はこれを壊さないでください

私のコード:

$('#enviarquestionario').click(function(event){
    event.preventDefault();

        $('input.percent').each(function(){
            valor = $(this).val();
            if(isNaN(valor) || valor > 100 || valor < 0 ){
                alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
                $(this).focus();
                return false;
            }else{
                $('#questionarioparticipacao').submit();
            }
        });

    return false;
});

どういうわけかフォームが送信されています。

 #enviarquestionario is a ancor
4

3 に答える 3

1

代わりにこれを試してください:

$('#enviarquestionario').click(function(event){
    event.preventDefault();
    var isError = false;

    $('input.percent').each(function(){
        valor = $(this).val();
        if(isNaN(valor) || valor > 100 || valor < 0 ){
            alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
            $(this).focus();
            isError = true;
            return false;
        }
    });

    if(!isError){ $('#questionarioparticipacao').submit(); }

    return false;
});
于 2012-11-04T15:28:16.300 に答える
0

1つの検証が失敗した場合でも、falseに設定された有効なフラグを使用するようにコードを変更することを検討してください。

$('#enviarquestionario').click(function(event){

        event.preventDefault();

        var valid = true; // initially set to true

        $('input.percent').each(function(){
            valor = $(this).val();
            if(isNaN(valor) || valor > 100 || valor < 0 ){
                alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
                $(this).focus();
                valid = false; // set to false even if one fails
                return false;
            }
        });

        // submit only if all validations pass
        if(valid === true) $('#questionarioparticipacao').submit();

        return false;
});
于 2012-11-04T15:27:52.323 に答える
0

ちょうど私のバージョン。これは実際にあなたが望むように.eachを壊します。

$('#enviarquestionario').click(function(event){
    event.preventDefault();
        var breakerbreaker = false;
        $('input.percent').each(function(){
            if(breakerbreaker){ return false; }

            valor = $(this).val();
            if(isNaN(valor) || valor > 100 || valor < 0 ){
                alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
                $(this).focus();
                breakerbreaker = true;
        });

    if(!breakerbreaker){ $('#questionarioparticipacao').submit(); }    
    return false;
});
于 2012-11-04T15:34:13.150 に答える