【问题标题】:custom form validation form自定义表单验证表单
【发布时间】:2011-11-03 08:33:27
【问题描述】:

我想在提交表单之前验证一些输入,我正在这样做

$(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)然后仍然提交表单...-编辑-忽略这个,它发生是因为 console.log() 我是使用。工作正常。

我做错了什么?

【问题讨论】:

    标签: javascript jquery validation submit


    【解决方案1】:

    改成这个……

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

    【讨论】:

    • 从你所说的 IE 中的验证器代码中存在错误,这会停止 javascript 的执行,因此你永远不会返回 false,因此表单会提交。您应该更正与 IE 中的 slideDown 相关的错误,并且一切正常
    • validarFormulario() 在 IE 中返回 true 还是 false?
    【解决方案2】:

    e.preventDefault();阻止你,把它改到最后一行。

    【讨论】:

    • if(validarFormulario()==true){ $('#form_arc_packages').submit(); } e.preventDefault(); ??
    • 试试 Nicola Peluchetti 所说的,return false[JQ] 或 preventdDefault
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 2020-01-08
      相关资源
      最近更新 更多