API调用期间禁用按钮

时间:2018-05-20 07:59:30

标签: javascript jquery

我正在尝试按下按钮,在运行调用API的函数时禁用该按钮,当它完成时我想重新启用该按钮。

我尝试了一些变体,例如attr() / removeAttr(),以及$(this)$('#miss')下面的变体,但奇怪的是,我只有按钮禁用的禁用行,当我有禁用后跟启用时,如下面的代码,按钮永远不会禁用。我错过了什么?

$('#miss').click(function() {
  $(this).prop('disabled', true);

  registerShot('miss');

  $(this).prop('disabled', false);
});

2 个答案:

答案 0 :(得分:1)

如果您的registerShot功能没有问题,这将对您有所帮助:

$('#miss').click(function() {
  let missButton = $(this);
  $(missButton).prop('disabled', true);

  registerShot('miss')
    .then(function(res) {
      $(missButton).prop('disabled', false);
    });

});

答案 1 :(得分:0)

问题是您的函数是异步调用的,因此按钮被禁用,但在调用registerShot后立即重新启用。

您可以将元素传递给registerShot,然后在函数末尾重新启用它:

$('#miss').click(function () {
            $(this).prop('disabled', true);
            registerShot('miss',this);
        });

function registerShot(p1,e) {
  //CodeHere
  (e).prop('disabled', false);
}