Отключение всех событий от элемента
Зраствуйте,
у меня проблема с тем что внешняя js библиотека привязывает событие на нажатие клавиши "пробел", из-за чего в полях input я не могу поставить пробел. Код библиотеки я не могу менять, так как он зашифрован. может кто подскажет как от элемента input отключить все события связанные с нажатием клавиш. Пробовал на jquery: $("input").unbind('keydown'); $("input").unbind('keypress'); $("input").unbind('keyup'); но не помогает Заранее благодарю. |
<input id="a"><br>Пробел нажат раз : <b id="b">0</b> <br> <button onclick="stop(this)">Stop it!</button>
<script>
var input = document.getElementById("a"),
log = document.getElementById("b"),
pressed=0,
handler = function (e){
if(e.keyCode===32){
log.innerHTML=++pressed;
}
}
input.addEventListener( 'keydown', handler, false);
function stop(a){
input.onkeydown = null;
input.removeEventListener('keydown', handler, false)
a.setAttribute('disabled','disabled')
}
</script>
|
melky, а для addEventListener?
|
только надо знать обработчик :(
нука, этот способ покруче, но теряются все ссылки, все аттрибуты ... поставьте сами. зато обработчик отпадает
<input id="a"> <button onclick="stop(this)">Stop it!</button> <br>Пробел нажат раз : <b id="b">0</b>
<script>
var input = document.getElementById("a"),
log = document.getElementById("b"),
pressed=0,
handler = function (e){
if(e.keyCode===32){
log.innerHTML=++pressed;
}
}
input.addEventListener( 'keydown', handler, false);
function stop(a){
// удаляем старый
document.body.removeChild( input );
// вставляем новый
input = document.body.insertBefore( document.createElement( 'input' ) , document.body.firstChild );
// красивости...
a.setAttribute('disabled','disabled');
a.innerHTML = "replaced"
}
</script>
|
Цитата:
input.addEventListener( 'keydown', handler, false); |
пока не помогло
я немного поэкспериментировал и выяснилось что обработчик висит не на элементе input, а вообще на всем окне так как срабатывает при нажатии на пробел в любой точке экрана
Как с этим быть, ка его грохнуть? |
| Часовой пояс GMT +3, время: 07:14. |