是否可以在不改变其功能的情况下禁用onclick?

16 javascript onclick javascript-events

我知道在元素上禁用onclick事件的方式是:

element.onclick = null;
Run Code Online (Sandbox Code Playgroud)

启用:

element.onclick = function(){
   // something
};
Run Code Online (Sandbox Code Playgroud)

要么

element.addEventListener("click", me);
Run Code Online (Sandbox Code Playgroud)

这很好但是当你有几个元素 - 每个元素具有不同参数值的相同功能 - 使用这种方式会变得有点烦人.有没有办法可以在不牺牲初始函数及其参数的情况下禁用它?

我希望保持函数的方式,而不必将其设置为null或其他东西,以便禁用.

Don*_*ank 18

使用该disabled属性禁用按钮.

<button onclick="alert('clicked')">Enabled</button>
<button onclick="alert('clicked')" disabled>Disabled</button>
Run Code Online (Sandbox Code Playgroud)

这种方法的优点(在替代答案中建议的"指针事件")是它不仅会阻止你使用按钮作为鼠标用户,而且还会停止辅助技术和使用键盘的任何人.

在JavaScript中,您可以使用以下命令禁用或启用该属性:

el.disabled = true;   // Disable.
el.disabled = false;  // Enable.
Run Code Online (Sandbox Code Playgroud)

或者使用jQuery,您可以:

$('button').prop('disabled', true);   // Disable.
$('button').prop('disabled', false);  // Enable.
Run Code Online (Sandbox Code Playgroud)

  • @luke我认为他说这个方法会禁用键盘用户,相比其他答案(带指针事件),这不会 (3认同)

Ale*_*nic 6

你可以用css来做.

<button onclick="alert('clicked')">Can click</button>
<button onclick="alert('clicked')" style="pointer-events: none;">Cannot click</button>
Run Code Online (Sandbox Code Playgroud)

Pro:它适用于所有HTML元素

Con:它不会阻止键盘操作

  • 这将阻止某人使用鼠标单击按钮,但它不会阻止键盘用户使用它. (14认同)