0
<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;

但不提交表格..请任何人都可以帮忙吗?

4

2 回答 2

1

消除

e.preventDefault();

和改变

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

进入

return !hasError;

作为旁注,live()不推荐使用on()较新的 jQuery 版本

于 2012-08-29T10:42:02.433 回答
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类,它将绕过验证并正常提交。

于 2012-08-29T10:42:41.137 回答