пользовательская форма проверки формы - PullRequest
2 голосов
/ 03 ноября 2011

Я хочу проверить несколько входов перед отправкой формы, я делаю это

$(document).ready(function(){
    $('#form_arc_packages').submit(function(e){ /*should i use focus or similar, here?*/
        e.preventDefault();
        if(validarFormulario()==true){
            $('#form_arc_packages').submit(); /*Am i starting an infinite loop, here?*/
        }
    });
});

, где

function validarFormulario(){       
        var valido = true;
        $('.errorCanc').slideUp();
        var fecha1=$('#date1').val();
        var fecha2=$('#date2').val();
        var area1=$('#area1').val();
        var area2=$('#area2').val();

        if (fecha1.length < 1){     $('#date1').next('.errorCanc').slideDown();     valido = false;     }
        if (fecha2.length < 1){  $('#date2').next('.errorCanc').slideDown();        valido = false;     }
        if (area1.length < 1){  $('#area1').next('.errorCanc').slideDown();     valido = false;     }   
        if (area2.length < 1){  $('#area2').next('.errorCanc').slideDown();     valido = false;     }   

        return valido;
}

Пока что проверяется только длина входов, но проблема в том, что форма не будет отправлена ​​(даже когда все входы установлены и с console.log, я проверяю, что validarFormulario возвращает true),

EDIT

И вот так:

$(document).ready(function(){
        $('#form_arc_packages').submit(function(e){ 
            if(validarFormulario()==true){
                $('#form_arc_packages').submit(); 
            }else{
                //Post didn't pass validation, so prevent posting
                e.preventDefault(); return false;
            }
        });
});

Кажется, что работает нормально в Firefox, но, например, в IE7, он показывает ошибки (с slideDown), а затем все еще отправляет форму ... -EDIT- игнорировать это, это произошло из-за console.log() я был с помощью. отлично работает.

Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

Я думаю, что вы всегда запрещаете действие по умолчанию, вы должны предотвращать его, только если вы не проходите проверку:

$(document).ready(function(){
    $('#form_arc_packages').submit(function(e){ /*should i use focus or similar, here?*/      
        if(validarFormulario()==true){
            $('#form_arc_packages').submit(); /*Am i starting an infinite loop, here?*/
        }else{//Post didn't pass validation, so prevent posting
             return false;
        }
    });
});
1 голос
/ 03 ноября 2011

Измените это на это ...

$(document).ready(function(){
    $('#form_arc_packages').submit(function(e){        
        if(validarFormulario()==false){
            e.preventDefault();
        }            
    });
});
1 голос
/ 03 ноября 2011

e.preventDefault(); предотвращая вас, измените его на последнюю строку.

...