Javascript 在API调用期间禁用按钮
我试着,在一个按钮点击时,在我运行一个调用API的函数时禁用这个按钮,当它完成后,我想重新启用这个按钮 我尝试了一些变体,如Javascript 在API调用期间禁用按钮,javascript,jquery,Javascript,Jquery,我试着,在一个按钮点击时,在我运行一个调用API的函数时禁用这个按钮,当它完成后,我想重新启用这个按钮 我尝试了一些变体,如attr()/removeAttr(),以及下面的$(this)和$(“#miss”),但奇怪的是,当我只有禁用行按钮禁用时,当我禁用后再启用时,例如在按钮下面的代码中,按钮从不禁用。我错过了什么 $('#miss').click(function() { $(this).prop('disabled', true); registerShot('miss');
attr()
/removeAttr()
,以及下面的$(this)
和$(“#miss”)
,但奇怪的是,当我只有禁用行按钮禁用时,当我禁用后再启用时,例如在按钮下面的代码中,按钮从不禁用。我错过了什么
$('#miss').click(function() {
$(this).prop('disabled', true);
registerShot('miss');
$(this).prop('disabled', false);
});
问题是您的函数被异步调用,因此该按钮被禁用,但在调用registerShot后立即被重新启用 您可以将元素传递给registerShot,然后在函数末尾的中重新启用它:
$('#miss').click(function () {
$(this).prop('disabled', true);
registerShot('miss',this);
});
function registerShot(p1,e) {
//CodeHere
(e).prop('disabled', false);
}
如果您的
注册表shot
功能写得没有问题,这将有助于您:
$('#miss').click(function() {
let missButton = $(this);
$(missButton).prop('disabled', true);
registerShot('miss')
.then(function(res) {
$(missButton).prop('disabled', false);
});
});
使
注册表停止
,无论它是什么,返回一个承诺,然后调用。然后对其进行
,或者等待
,然后重新启用该按钮。