代码之家  ›  专栏  ›  技术社区  ›  Alec

提交表单后jQuery检查出现问题

  •  1
  • Alec  · 技术社区  · 16 年前

    我有一个表单,在它提交之前,我想根据数据库检查一些输入。想法: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 回复  |  直到 16 年前
        1
  •  1
  •   Sampson    16 年前

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

        2
  •  1
  •   jimyi    16 年前

    您可以为此使用布尔标志:

    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;
    });
    
        3
  •  1
  •   SapphireSun    16 年前

    尝试用带有onclick的链接替换submit按钮。然后按程序提交表格。例如。:

    <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();
      };
    });
    
    推荐文章