0

これは、私のウェブサイトにあるフォームを検証する jquery 関数の一部です。

        /*
    validates errors on all the fieldsets
    records if the Form has errors in $('#formElem').data()
    */
    function validateSteps(){
        var FormErrors = false;
        for(var i = 1; i < fieldsetCount; ++i){
            var error = validateStep(i);
            if(error == -1)
                FormErrors = true;
        }
        $('#formElem').data('errors',FormErrors);   
    }



    /*
    validates one fieldset
    and returns -1 if errors found, or 1 if not
    */
    function validateStep(step){
        if(step == fieldsetCount) return;

        var error = 1;
        var hasError = false;
        $('#formElem').children(':nth-child('+ parseInt(step) +')').find(':input:not(button)').each(function(){
            var $this       = $(this);
            var valueLength = jQuery.trim($this.val()).length;

            if(valueLength == ''){
                hasError = true;
                $this.css('background-color','#FFEDEF');
            }
            else
                $this.css('background-color','#A8FC9C');    /* Campo preenchido */
        });
        var $link = $('#navigation_form li:nth-child(' + parseInt(step) + ') a');
        $link.parent().find('.error,.checked').remove();

        var valclass = 'checked';
        if(hasError){
            error = -1;
            valclass = 'error';
        }
        $('<span class="'+valclass+'"></span>').insertAfter($link);

        return error;
    }

    /*
    if there are errors don't allow the user to submit
    */

    $('#enviar_candidatura').bind('click',function(){
        var preenchimentoForm=true;
        if($('#formElem').data('errors')){
            preenchimentoForm=false;

            dadosFormularios(preenchimentoForm);
            //return false;
        }
        else{
            dadosFormularios(preenchimentoForm);
        }
    });
});

ただし、クライアント側のフィールドを検証するために LiveValidation (http://livevalidation.com/) も使用しています。明らかに、jquery によって検証された部分が OK であれば、フォームが送信されるため、LiveValidation 部分にエラーがあっても問題ありません。したがって、このjqueryコード内にif句などを追加して、LV_invalid_fieldsがあるかどうかを確認する必要があります。「はい」の場合、jquery検証部分で行われたようにフォームの送信をブロックしますが、その方法もわかりません。上記のコードのどこにこの検証を配置するのが正しいのですか。助けていただければ幸いです。ありがとう!

4

3 に答える 3

0
//... live validation codes here

$("#myform").submit( function (event) ) {
    event.preventDefault();
    if ($(".LV_invalid").length > 0) {
        //do not submit   
    }
    else {
        //do form submission here
    }
}
于 2012-10-01T09:22:35.237 に答える
0

click最初に、フォームのバインディングをsubmitアクションのバインディングに変更する必要があります。falseまた、サブミット アクションを停止するには、サブミット アクションで関数を返す必要があります。

したがって、次のようにコードを変更します。

$('#formElem').submit( function (event) ) {
    var preenchimentoForm = true;
    if ($('#formElem').data('errors')){
        preenchimentoForm = false;
    }
    return preenchimentoForm;
}   

目立たない JavaScript に関するいくつかの説明をここで読むことができます。

于 2012-10-01T10:05:55.270 に答える