Отключение всех событий от элемента
Зраствуйте,
у меня проблема с тем что внешняя 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, время: 15:45. |