Отключить onclick с помощью CSS:: Возможно?
Я хотел бы отключить событие onclick
с помощью CSS. Возможно ли это?
Скажем, у меня
<div id="btnCopy" class="button" onclick="btnCopy(this);"><img src="copy.png"></div>
и добавив класс "disabled"
document.getElementById("btnCopy").className += " disabled";
Я хотел бы отключить onclick-событие для этого элемента, поэтому onclick="btnCopy(this);"
не будет активным.
И удалив класс "disabled"
document.getElementById("btnCopy").className =
document.getElementById("btnCopy").className.replace(/(?:^|\s)disabled(?!\S)/, '');
он вернется к нормальному состоянию, поэтому onclick
будет активным.
Ответы
Ответ 1
Добавьте Javascript в свою функцию btnCopy
, чтобы проверить, имеет ли элемент параметра класс disabled
или нет.
Использование CSS для изменения поведения JavaScript невозможно. CSS предназначен для стилизации HTML-элементов, JavaScript предназначен для обработки поведения событий и сайта. CSS и JavaScript - это две разные вещи. Единственное, что возможно с CSS, - это запретить пользователю щелкнуть мышью по вводу (например, кнопка). С помощью решения CSS вы не отключите код в событии onclick. Вы отключите возможность пользователя запускать событие onclick.
Однако есть много способов изменить материал на странице (используя еще больше JavaScript или с некоторыми плагинами для вашего браузера), что может позволить щелкнуть по кнопке, несмотря на псевдоэлемент CSS. Вот почему использование CSS для этого не рекомендуется.
Ответ 2
В некоторых браузерах вы можете установить pointer-events: none
, но это отключает все события мыши, а не только клики. См.: https://developer.mozilla.org/en/CSS/pointer-events/
Ответ 3
Вы можете сделать это.
pointer-events: none;
cursor: default;
подробнее здесь
Ответ 4
Он взламывает, но я бы предложил использовать псевдоэлементы:
На кнопке с отключенным классом вы можете создать псевдоэлемент, накрывающий кнопку, чтобы она не была нажата.
Но было бы разумнее использовать javascript, поскольку вы уже используете это, чтобы добавлять и удалять классы...
РЕДАКТИРОВАТЬ: Не рекомендуется вообще, но здесь вы идете:
#btnCopy {position:relative;z-index:1;}
.disabled:before {
content:" ";
display:block;
position:absolute;
top:0;left:0;right:0;bottom:0;
z-index:10;
}
Ответ 5
Если вы используете javascript для добавления и удаления класса, то почему бы просто не использовать его, чтобы отключить событие click?
Ответ 6
Вот как это делает Bootstrap.
.btn.disabled, .btn[disabled] {
cursor: not-allowed;
opacity: 0.65;
filter: alpha(opacity=65);
box-shadow: none;
}
Вы можете просто сохранить cursor: not-allowed;
, и если вам не нужны reset стилей, вы удалите их opacity: 0.65; filter: alpha(opacity=65); box-shadow: none;
Ответ 7
Если вы хотите добавить или удалить класс "отключено", вы можете также проверить этот класс в обработчике событий и не делать ничего, что у элемента был отключен.
Ответ 8
Вы можете использовать javascript для отключения кнопок onclick
, добавив эту строку javascript.
var btnCopy = document.getElementById("btnCopy");
btnCopy.className += " disabled";
btnCopy.onclick = null;
Лучшим вариантом является, вероятно, использование jQuery и проверка того, имеет ли btnCopy класс 'disabled'.
if(!$('btnCopy').hasClass('disabled')){
//Add code to copy text here
}
Удачи!
Ответ 9
<div id="btnCopy" class="button"
onClick="if(this.className.indexOf('disabled') == -1){btnCopy(this);}">
<img src="copy.png">
</div>
это должно быть сделано с помощью Javascript. if(indexOf('disabled') == -1)
должен сделать трюк.
Ответ 10
Один из способов сделать это исключительно с помощью CSS - отображать невидимое невидимое наложение при наведении.
Демо: http://jsfiddle.net/FNVmh/1/