0

我正在尝试禁用大型表单上的重复提交点击:

$(document).ready(function () {
  $('#loading').hide();
  $('form').bind('submit', function (e) {
     $('#loading').show();
     $(this).find('input:submit').attr('disabled', 'disabled');
  });
});

我也试过了:

  $('input:submit').click(function () {
     $(this).attr('disabled', true);
  });

但是,在单击提交和禁用按钮之间存在明显的延迟 - 几秒钟。

有没有办法消除这种延迟,或者至少确定原因?

4

3 回答 3

1

如果它是一个非常大的表单(并且忘记了用户体验),请尝试使用 ID/属性选择器语法来查找提交按钮。使用您正在使用的选择器在 DOM 中工作可能会很困难。

注意文档

因为 :submit 是一个 jQuery 扩展而不是 CSS 规范的一部分,所以使用 :submit 的查询不能利用原生 DOM querySelectorAll() 方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用 [type="submit"]。

于 2012-04-30T19:22:39.657 回答
0

不应该……你在其他地方有问题。

这是一个没有延迟的实时示例

于 2012-04-30T19:16:35.993 回答
0

克里斯,

用这些内容覆盖提交,并不是说它是完美的,而是让 UI 有机会收集它的想法:):

$('input:submit').click(function (e) {
    var outerItem = this;
    e.preventDefault();
    $(this).attr('disabled', 'disabled');
    setTimeout(function () { outerItem.submit(); }, 10);
    return false;
});

免责声明;未经测试,所以请注意购买者..

进一步参考:http ://api.jquery.com/submit/

于 2012-04-30T19:54:51.563 回答