jquery .submit返回false并不总是工作

时间:2010-03-03 13:54:09

标签: jquery forms

之前我曾问related question,但我现在需要回答的问题似乎已经过了一些具体的切线,所以我觉得提出一个新问题会更好。

我试图阻止表单提交,直到页面上的所有ajax调用都成功返回。

我有一个简单的测试(在调用开始时向计数器添加1,成功时减1)。

我相信我应该能够做到:

// can we submit yet?
  $('#checkoutform').submit(function() {
    if (ajaxcallcounter == 0) {
      return true;
    }
    return false;
  });

在计数器达到零之前阻止表单提交(所有调用都已完成)但由于某种原因,这似乎不是100%有效。

我不知道这是不是红鲱鱼,但是在通话完成之前设法结账的客户的所有报告都使用了Mac Safari(虽然这可能只是巧合)

您可以看到行动中的代码here - 尝试更改投放国家/地区以启动某些ajax调用。当计数器> 1时,应禁用右下方的提交按钮。 0

1 个答案:

答案 0 :(得分:1)

定义var ajaxcallcounter = 0;在你的功能之外。将它放在JavaScript文件的顶部,使其成为global variable

通常,您可以通过停止传播来确保完全控制事件。每个事件处理程序都有一个隐式参数,通常定义为“e”或“event”,您可以在其上调用preventDefault(),如下所示:

$('#checkoutform').submit(function(e) {
    e.preventDefault();
    if (ajaxcallcounter == 0) {
      return true;
    }
    return false;
  });