代码之家  ›  专栏  ›  技术社区  ›  Simone Carletti

禁用按钮时,jquery脚本在Safari中不工作

  •  1
  • Simone Carletti  · 技术社区  · 15 年前

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

    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 回复  |  直到 15 年前
        1
  •  2
  •   geowa4    15 年前

    你知道你不必点击按钮就可以提交表单,对吗?我认为你应该采取一种全新的方法来解决这个问题。为了防止重复提交,只需:

    $(".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;
    }
    

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