自定义表单验证表单

时间:2011-11-03 08:33:27

标签: javascript jquery validation submit

我想在提交表单之前验证几个输入,我正在做这个

$(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),

修改

就像这样:

$(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 个答案:

答案 0 :(得分:1)

e.preventDefault();阻止你,将其改为最后一行。

答案 1 :(得分:1)

我认为你总是阻止默认操作,只有在你没有通过验证时才应该阻止它:

$(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;
        }
    });
});

答案 2 :(得分:1)

将其更改为此...

$(document).ready(function(){
    $('#form_arc_packages').submit(function(e){        
        if(validarFormulario()==false){
            e.preventDefault();
        }            
    });
});