由于某种原因,当我尝试通过运行重新启用按钮时:
$("#reloadSuggestions").removeAttr('disabled');
我也尝试过:
$("#reloadSuggestions").prop('disabled', false);
我尝试过的任何操作都不会删除禁用的属性,它将保留为空白。在控制台中,如果我运行$("#reloadSuggestions").removeAttr('disabled');
,它将删除它,但是当我的实际代码运行时不会删除
PS为closed as off-topic回答了这个问题,没有人提供真正的解决方案。
当用户单击按钮时,按钮被禁用:
<div style="overflow: hidden;">
<p class="mb-1 pull-left mt-5">Select up to ten audiences</p>
<button class="btn-text mt-5 mb-1 pull-right" id="reloadSuggestions"><i class="far fa-sync-alt"></i></button>
</div>
$("#reloadSuggestions").click(function(e) {
fetchSuggestedTargeting();
$("#reloadSuggestions").prop("disabled", true);
});
如果用户未填写输入,我将再次启用该按钮:
function fetchSuggestedTargeting() {
// set array of keywords
var tagsinputKeywords = $("#interestTagInput").tagsinput('items')
// Make sure user entered keywords
if (tagsinputKeywords.length < 1) {
$("#reloadSuggestions").prop('disabled', false);
$("#searchSuggestedInterest").prop('disabled', false);;
swal({
title: "oops!",
text: "Please enter atleast 1 keyword that describes your product.",
imageUrl: "/alert-icon.png"
});
return;
}
}
here is an example of the issue
编辑:
为弄清SO的电源跳闸模式,我试图在单击按钮并用于异步获取数据后重新启用按钮,一旦获取数据,我想为用户重新启用按钮才能再次单击它。
当尝试通过运行disabled
将false
属性设置回$("#reloadSuggestions").prop('disabled', false);
时,发生什么都没有。
不确定这与有人询问如何更改属性的方式重复,这里的问题是,无论运行什么代码,除非我将其包装为超时,否则属性都不会更改。
答案 0 :(得分:-1)
删除了我以前的答案,一开始并不清楚。
为什么完全禁用按钮?如果用户未填写任何内容,您已经有了通知,否则他们将在输入中单击带有关键术语的按钮。禁用此按钮还有其他原因吗?除了阻止用户多次单击它之外?
您还可以尝试将事件附加到Sweet Alert的“ onClose”。
swal({
title: "oops!",
text: "Please enter atleast 1 keyword that describes your product.",
imageUrl: "/alert-icon.png",
onClose: enableButton
});
function enableButton() {
$("#reloadSuggestions").prop('disabled', false);
// anything else you wanted to happen after the modal closes
}
答案 1 :(得分:-2)
弄清楚如果我将代码包装成一个超时:
setTimeout(function () {
$("#reloadSuggestions").prop('disabled', false);
}, 0);
我的代码可行,我想到了这个解决方案,因为我正在阅读this question来解决类似的问题
设置超时后,它实际上会将异步代码排入队列,直到引擎执行当前调用堆栈为止。
希望这可以帮助遇到此烦人问题的其他人。
由于显然不存在错误,here is an example of the issue