Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > .input - backspace и Opera


Автор: dsCode 19.3.2008, 14:10
Друзья! Возникла маленькая (но не дающая покоя) проблема. Вопрос, на самом деле, смешной, думаю уже были обсуждения, даже спрашивать стыдно, но тем не менее. Что с клавишей backspace в Опере? Почему я не могу ее предотвратить в событии input'a? Вот маленький тестовый пример (в IE и FF проблем нет):

Код

<html>
  <head>
     <title>.test</title>
     <script type="text/javascript">
       function init() {
         var eventObj = !!window.opera ? 'onkeypress' : 'onkeydown'; // для Оперы - onkeypress
         document.getElementById('test')[eventObj] = function(e) {
           e = e || window.event;
           var key = e.keyCode || e.which;
           if (key == 8) {
             e.returnValue = false; 
             e.cancelBubble = true; 
             e.stopPropagation && e.stopPropagation(); 
             e.preventDefault && e.preventDefault();
             return false;
           }
           return true;
         };
       }
     </script>
  </head>
  <body onload="init(); return true;">
    <input type="text" id="test" value="ds [.code]" />
  </body>
</html>


Также надо предотвратить delete (код 46) - в IE и FF также все хорошо, Опера опять выпендривается =)

P.S.: блин, то ли я гуглом пользоваться разучился, то ли.. хрен знает =) Но все, что я нашел касаемо этой темы - цитата: "Also Opera does not let you cancel Backspace presses, while FireFox doesn't allow cancelling Delete.". Статья старая (2006 год) и поэтому я думаю, что могло что-то измениться касательно Оперы (для FF же изменилось - delete прекрасно предотвращается).

Так вот, интересно, неужели, действительно, нельзя? Или я затупил что-то упустил?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)