Jquery 单击后禁用HTML按钮以防止双击

Jquery 单击后禁用HTML按钮以防止双击,jquery,html,form-submit,double-submit-prevention,Jquery,Html,Form Submit,Double Submit Prevention,我想防止双击,因此在单击事件时在input元素上设置disabled属性似乎是正确的做法。其他答案也反映了这一点。这就是我用jQuery在CoffeeScript中写的: $('input[type="submit"]').on('click', -> $(this).addClass('disabled').attr('disabled', 'disabled') $(this).val('Sending') ) 我有 AddioType(“禁用”)< /Case>为基金会。

我想防止双击,因此在单击事件时在
input
元素上设置
disabled
属性似乎是正确的做法。其他答案也反映了这一点。这就是我用jQuery在CoffeeScript中写的:

$('input[type="submit"]').on('click', ->
  $(this).addClass('disabled').attr('disabled', 'disabled')
  $(this).val('Sending')
)

我有<代码> AddioType(“禁用”)< /Case>为基金会。

一般来说,这是有效的。但是,如果单击“上一步”,该按钮仍处于禁用状态。如果我转到页面并且页面已缓存,则按钮仍处于禁用状态。是否有一个JavaScript库可以处理所有这些小问题?似乎这是一个非常普遍的需求。我需要在上面添加多一点JavaScript/jQuery吗

我本以为HTML5现在已经有了某种机制

更新:我试图监听
页面显示
事件并取消禁用提交按钮:

$('input[type="submit"]').on('pageshow', function() {
  console.log('pageshowed')
  $(this).removeClass('disabled').removeAttr('disabled').val('Submit');
});
但是什么也没有发生,即使在第一次加载页面时也不会发生。我是否使用了
pageshow
错误?

使用
窗口上的
对象。适用于Chrome和Safari以及Firefox,但不确定IE是否适用于Opera 12(但将适用于Opera 15,因为与Chrome相同的引擎)。请在控制台中尝试
typeof window.onpageshow
进行检测。

我使用以下方法:

$(document).ready(function() {
  $('.auto-submit-disable')
    .submit(function () {
      $(this).find('button,input[type=submit]')
        .attr('disabled', 'true');
    });
});

if ($('.auto-submit-disable'))
  window.onunload = function(){}; // This forces re-execution of js
之后,只需在表单上添加
class=“auto submit disable”
。请注意,该方法对于浏览器来说非常繁重,因为在返回导航时重复所有JS非常繁重


因此,不建议将其作为在所有页面上运行的通用方法

也许,您可以使用快速而肮脏的解决方法:启用文档上的按钮。准备好了吗?@IvanKolmycheck-这不起作用<代码>$(文档)。ready
在缓存页面或返回浏览器时不会重新执行其处理程序。感谢您的解释,这只是胡乱猜测。然后试试@robertc-我会试试,但pageshow似乎只适用于Firefox?您不能仍然提交没有按钮的表单吗?例如,通过按enter键?不,大多数浏览器在没有活动提交输入时不接受。