1

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

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

我有addClass('disabled')基金会。

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

我会认为 HTML5 现在会有一些机制。

更新:我试图监听pageshow事件并取消禁用提交按钮:

$('input[type="submit"]').on('pageshow', function() {
  console.log('pageshowed')
  $(this).removeClass('disabled').removeAttr('disabled').val('Submit');
});

但是什么都没有发生,即使页面第一次加载也是如此。我用pageshow错了吗?

4

2 回答 2

0

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

于 2013-06-11T18:31:33.197 回答
0

我使用这种方法:

$(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 很重。

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

于 2013-07-23T21:58:07.327 回答