Можно ли отключить onclick без изменения его функции?
Способ, которым я знаю, отключить событие onclick для элемента:
element.onclick = null;
Включить:
element.onclick = function(){
// something
};
или же
element.addEventListener("click", me);
Это прекрасно, но когда у вас есть несколько элементов - каждый из которых имеет ту же функцию с разными значениями параметров, становится немного раздражающим использование этого способа. Есть ли способ отключить его, не жертвуя исходной функцией параметрами?
Я хочу, чтобы функция была такой, какой она есть, без необходимости устанавливать ее в значение null или что-то еще для отключения.
Ответы
Ответ 1
Используйте disabled
атрибут для отключения кнопки.
<button onclick="alert('clicked')">Enabled</button>
<button onclick="alert('clicked')" disabled>Disabled</button>
Преимущество этого метода (по сравнению с "событиями указателей", предложенным в альтернативном ответе) заключается в том, что он не только остановит вас, используя кнопку в качестве пользователя мыши, но также остановит вспомогательные технологии и всех, кто использует клавиатуру.
В JavaScript вы можете отключить или включить атрибут с помощью:
el.disabled = true; // Disable.
el.disabled = false; // Enable.
Или с помощью jQuery вы можете сделать:
$('button').prop('disabled', true); // Disable.
$('button').prop('disabled', false); // Enable.
Ответ 2
Вы можете сделать это в css.
<button onclick="alert('clicked')">Can click</button>
<button onclick="alert('clicked')" style="pointer-events: none;">Cannot click</button>
Ответ 3
Вы можете сделать это так
<button onclick="false && alert('clicked')">Try Click (Disable)</button>
<button onclick="true && alert('clicked')">Try Click (Enable)</button>
он будет работать как для события click, так и для нажатия клавиши.
<button onclick="false && alert('clicked')">Try Click (Disable)</button>
<button onclick="true && alert('clicked')">Try Click (Enable)</button>