Как я могу препятствовать тому, чтобы Клавиша Backspace перешла назад в JavaScript?

Это работает в IE, но я не могу заставить его работать в Opera или Firefox. Я хочу препятствовать тому, чтобы Клавиша Backspace перешла далеко, если и только если текущим фокусом является выпадающий ВЫБОР.

<html>
<body>
<select id="testselect">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>
<script language="javascript">
    document.getElementById("testselect").onkeydown = function(e) {
        if(!e) {
            e = event;
        }
        alert(e.keyCode);
        if (e.keyCode == 8 || e.keyCode == 46) {
       e.returnValue = false;

        e.cancelBubble = true;
        if (e.stopPropagation) { e.stopPropagation(); alert("stoppropagation");}
        if (e.preventDefault) { e.preventDefault(); alert("preventdefault");}
        return false;
        }
    };
</script>
</body>
</html>
13
задан hova 20 November 2009 в 20:54
поделиться

3 ответа

Что ж, оказывается, Opera требует отмены события в событии onkeypress , а не onkeydown.

Ссылка: http: // jimblackler. net / blog /? p = 20

1
ответ дан 2 December 2019 в 00:58
поделиться

Это сложнее, чем я мог подумать. В зависимости от причины, по которой вы не позволяете пользователю отступить от страницы, что-то вроде это может сработать для вас:

<script type="text/javascript">

        var bShowWarning = false;

        document.getElementById("testselect").onkeydown = function(e) {
            if (!e) {
                e = event;
            }
            if (e.keyCode == 8 || e.keyCode == 46) {
                bShowWarning = true;
            }
        };

        function UnLoadWindow() {
            if (!bShowWarning) return;
            return 'If you leave the page your data will be lost.';
        }

        window.onbeforeunload = UnLoadWindow;
    </script>
2
ответ дан 2 December 2019 в 00:58
поделиться

Вы можете проверить исходный код проекта из этой статьи . Он подробно рассказывает о том, как ему приходилось бороться с клавишей Backspace в разных браузерах.

0
ответ дан 2 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: