Я не могу запретить нажатию клавиш изменять выбранный параметр в Firefox - PullRequest
1 голос
/ 11 февраля 2010

Использование Firefox 3.5.7

Следующая тестовая страница должна вести себя как Opera, Safari и Chrome.

Нажатие клавиш (стрелки или 1-5) не должно иметь никакого эффекта (т.е. события должны быть отменены, чтобы число никогда не изменялось по сравнению с первоначальным значением по умолчанию «3»).

[У меня тоже есть отдельный рабочий код для IE].

Большое спасибо всем, кто может заставить его работать?

<html>  
    <head> 
        <title>Test</title>  
        <script type='text/JavaScript'>  
            function stop(evt)  
                {evt.preventDefault();  
                 evt.stopPropagation();  
                };  
        </script>  
    </head>  
    <body>  
        <select onkeydown='stop(event);' onkeypress='stop(event);'>  
            <option>1</option>  
            <option>2</option>  
            <option selected="selected">3</option>  
            <option>4</option>  
            <option>5</option>  
        </select>  
    </body>  
</html> 

Ответы [ 2 ]

0 голосов
/ 24 июня 2010

@ icktofay: это упрощенная тестовая страница, демонстрирующая проблему. То, что я на самом деле делаю в основном коде, - это замена встроенной обработки нажатия клавиш выбора явными действиями.

@ boxofrats: Да, это зло ... но эффективно. Спасибо.

0 голосов
/ 09 июня 2010

Это работает для меня (выглядит довольно злобно, я пока не нашел другого решения для FF):

<html>  
<head> 
    <title>Test</title>  
    <script type='text/JavaScript'>
        function stop(evt) {
          evt.preventDefault();
          var elem = document.getElementById('mysel');
          elem.blur();
          setTimeout('refocus()', 0);
        };
        function refocus() {
          document.getElementById('mysel').focus();
        }
    </script>  
</head>  
<body>  
    <select id="mysel" onkeydown="stop(event);">  
        <option>1</option>  
        <option>2</option>  
        <option selected="selected">3</option>  
        <option>4</option>  
        <option>5</option>  
    </select>  
</body>  

...