提交表单后jQuery-check的问题

时间:2009-12-25 23:43:48

标签: php jquery

我有一个表单,在提交之前我想检查一些数据库的输入。想法:1)提交表格,2)检查值,3)显示错误或实际提交表格。例如:

$(form).submit(function() {
  $.post('check.php', {
    values
  }, function(res) {
    // result I need before submitting form or showing an error
  });

  return false;
});

现在,我得到结果需要一些时间(即不是立即),所以我在底部放入return false,阻止表单提交,然后再返回$ .post结果有它的东西。

问题:在我从$ .post获得结果后,一切都结果没问题,我如何告诉脚本继续提交表单?如果我使用submit(),它只会将其恢复到此检查脚本,从而创建无限循环。

有什么想法吗?提前谢谢,圣诞快乐!

3 个答案:

答案 0 :(得分:1)

您可以使用布尔标志:

var isValid = false;
$(form).submit(function() {
  if (isValid) return true;
  $.post('check.php', {
    values
  }, function(res) {
    if (res.valid) {
      isValid = true;
      $(form).submit();
    }
    // result I need before submitting form or showing an error
  });

  return false;
});

答案 1 :(得分:1)

如果你这样做的话,你实际上是在两次提交表格。这似乎很浪费。相反,只是阻止表单提交,并异步处理值(就像您现在一样)。从服务器接收数据,如果它是好的,如果不是,则拒绝它。如果您已经开始将数据发送到服务器,则无需提交表单。这有点多余。

答案 2 :(得分:1)

尝试使用包含onclick的链接替换提交按钮。之后以编程方式提交表单。 E.g:

<a id="submit">Submit</a>

$($("a#submit").click(function() {
   $.post('check.php', {
          values
         }, function(res) {
               // result I need before submitting form or showing an error
         });
  if (condition) {
     $('[name=form_name]').submit();
  };
});