使用jquery验证后无法提交表单(使用preventDefault())

时间:2012-08-29 10:39:28

标签: jquery validation

<script type="text/javascript">
$(document).ready(function(){
$('#addprojectform').live('submit', function (e) {
    e.preventDefault();
     $(".error").remove();   

    var startdate = $("#startdate").val();
    var client = $('#client').val();
    var source_lang= $('#source_lang option:selected').length;
    var targ_lang = $('#targ_lang option:selected').length;
    var qty = $('#qty').val();

    var hasError = false;

   if(startdate == '') {
  $("#startdate").after('<span class="error" style="color: red;">This field is     required.</span>');
  hasError = true;
}

if(client == '') {
  $("#client").after('<span class="error" style="color: red;">This field is required.  </span>');
  hasError = true;
}

if(!(source_lang)) {
  $("#source_lang").after('<span class="error" style="color: red;">This field is required.</span>');
  hasError = true;
}

if(!(targ_lang)) {
  $("#targ_lang").after('<span class="error" style="color: red;">This field is required.</span>');
  hasError = true;
}
if(qty == '') {
  $("#qty").after('<span class="error"  style="color: red;">This field is required.</span>');
  hasError = true;
}
} // if translation


if(hasError == false)
 return true;
    });

 });
 </script>

我有这个代码。我想在提交之前验证表单。我无法控制表单何时没有错误。如果没有找到错误,我想提交表单。我添加了这段代码:

if(hasError == false)
 return true;

但不提交表格..请有人帮忙吗?

2 个答案:

答案 0 :(得分:1)

除去

e.preventDefault();

并更改

if(hasError == false)
   return true;
});

return !hasError;

作为附注,live()在新版jQuery版本上不推荐使用on()

答案 1 :(得分:1)

我做了什么,虽然它可能不是很棒但是:

$('#form').submit(function(e) 
{
    if(!$(this).hasClass('valid'))
    {
        e.preventDefault();
        var isValid = false;
        // do validation to set isValid true or false;
        if(isValid)
        {
            $(this).addClass('valid');
            $(this).submit();
            // or possibly $(this).addClass('valid').submit();
            return;
        }
    }
});

这是如何工作的,第一次提交时,它会检查表单是否有一个名为valid的类。如果没有,它将停止表单验证并进行验证。

如果它有效,它会将类添加到表单并重新提交。由于表单现在具有valid类,它将绕过验证并正常提交。