禁用页面上的所有按钮

Fre*_*red 9 html javascript ajax jquery asp.net-mvc-5

我有一个MVC视图,上面有许多按钮(篮子里的每个项目都有2个按钮)......

<button class="pbbg" id="ProductMinus_161637" type="button">-</button>
<button class="pbbg" id="ProductPlus_161637" type="button">+</button>
Run Code Online (Sandbox Code Playgroud)

(他们都有一个onclick活动)

当按下这些按钮中的任何一个时,我想禁用每个产品的所有按钮,直到篮子完成更新.

click事件调用JavaScript函数,而JavaScript函数又调用Ajax.在这篇文章之后,我尝试做的第一件事是禁用所有按钮.....

$("input[type=button]").attr("disabled", "disabled");
Run Code Online (Sandbox Code Playgroud)

然后在Ajax调用返回后重新启用它们....

$("input[type=button]").removeAttr("disabled");
Run Code Online (Sandbox Code Playgroud)

我没有错误,但按钮没有被禁用.

我哪里错了?

Tus*_*har 23

你的选择器错了.而不是input..选择器,你应该使用:button伪选择器.

您可以使用:button选择器选择所有按钮.

$(':button').prop('disabled', true); // Disable all the buttons
Run Code Online (Sandbox Code Playgroud)

要启用所有按钮:

$(':button').prop('disabled', false); // Enable all the button
Run Code Online (Sandbox Code Playgroud)

编辑

如果您只想禁用id以Productuse 开头的按钮:

$('button[id^="Product"]')
Run Code Online (Sandbox Code Playgroud)

  • `:button`将选择所有`button`,`input [type ="button"]`和`input [type ="submit"]` (3认同)

ban*_*cer 6

如果有人正在寻找普通的 JavaScript 解决方案:

const buttons = document.getElementsByTagName("button");
for (const button of buttons) {
  button.disabled = true;
}
Run Code Online (Sandbox Code Playgroud)