禁用按钮时,jQuery脚本在safari中不起作用

时间:2009-10-20 10:53:24

标签: javascript jquery forms safari

我编写了这段简单的代码,以防止多次提交表单。

jQuery.fn.preventDoubleSubmit = function() {

  this.find(":submit").each(function() {
    $(this).click(function() {
      this.originalValue = this.value;
      this.disabled = true;
      this.beenClicked = true;
    });
  });

  // [...]

  return this.submit(function() {
    if (this.beenSubmitted) {
      return false;
    } else {
      this.beenSubmitted = true;
    }
  });

};

// [...]

不幸的是,使用Safari它不起作用。当我单击表单时,该按钮被禁用,Safari不会提交表单。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您知道您无需点击表单提交按钮,对吗?我认为你应该采取一种全新的方法,并考虑到这一点。要防止双重提交,只需:

$(".selector").submit(window.mySubmitHandler);

function mySubmitHandler(evt) {
    $("#submitButton").attr("disabled", true);
    //do other stuff here if you want

    //redefine the function in the function itself
    window.mySubmitHandler = function(evt) {
        evt.preventDefault();
    }

    return true;
}

这样,该函数将允许第一次提交并覆盖自身。然后,每次后续尝试都将简单地停止事件的默认行为。