【问题标题】:Can't submit the form after validating with jquery (using preventDefault())使用 jquery 验证后无法提交表单(使用 preventDefault())
【发布时间】:2012-08-29 10:39:27
【问题描述】:
<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;

但不提交表单。请任何人提供帮助?

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    删除

    e.preventDefault();
    

    改变

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

    进入

    return !hasError;
    

    附带说明,live() 在较新的 jQuery 版本上已弃用,而支持 on()

    【讨论】:

      【解决方案2】:

      我所做的,虽然它可能并不出色,但它是:

      $('#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 类,它将绕过验证并正常提交。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多