在提交表单之前,我想验证几个输入,我正在这样做
$(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;
}
});
});在火狐中似乎工作得很好,但例如,在IE7中,它(用slideDown)显示错误,然后静态提交表单……-EDIT-忽略这一点,这是因为我使用的console.log()。工作正常。
我做错了什么?
发布于 2011-11-03 16:55:57
把它改成这个...
$(document).ready(function(){
$('#form_arc_packages').submit(function(e){
if(validarFormulario()==false){
e.preventDefault();
}
});
});发布于 2011-11-03 16:41:52
e.preventDefault();阻止u,将其更改为最后一行。
发布于 2011-11-03 16:54:34
我认为你总是在阻止默认操作,只有在你没有通过验证的情况下才应该阻止它:
$(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;
}
});
});https://stackoverflow.com/questions/7991996
复制相似问题