我想在提交表单之前验证几个输入,我正在做这个
$(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()
我正在使用。工作正常。
我做错了什么?
答案 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();
}
});
});