Как заменить нажатие клавиши на jQuery? - PullRequest
2 голосов
/ 20 мая 2011

Мне нужно иметь возможность заменить нажатие клавиши на jQuery. Когда нажата стрелка вправо, я хочу, чтобы вместо нее была нажата клавиша табуляции. Пока что у меня есть:

<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="jquery.simulate.js"></script>
<script type="text/javascript">
    $(function () {
        $("select").each( function() {
                $(this).keydown(function(event) {
                    if (event.which == '39') {
                        $(this).simulate("keydown", { keyCode: 9, ctrlKey: false, shirtKey: false });
                        $(this).simulate("keypress", { keyCode: 9, ctrlKey: false, shirtKey: false });
                        $(this).simulate("keyup", { keyCode: 9, ctrlKey: false, shirtKey: false });
                        return false;
                    }
            });
        });
    });
</script>

39 - стрелка вправо, а 9 - кнопка вкладки. Кроме того, симуляция нажатия клавиш рекурсивно вызывает обработчик событий, что, очевидно, плохо, но даже без этой строки это все равно не работает.

Я использую jquery.simulate.js, расположенный в (http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/simulate/jquery.simulate.js?r=6063), потому что я не мог найти способ имитировать нажатие клавиши только с помощью jQuery.

Нажатие клавиши просто не имитирует фактическое нажатие клавиши.

1 Ответ

2 голосов
/ 20 мая 2011

Вы не можете имитировать фактические нажатия клавиш с помощью JavaScript.Это ключевой компонент безопасности браузера.Представьте, что вы можете имитировать Alt-Tab или Ctrl-Shift-Del.

Конечно, вы можете определить метод, который инкапсулирует поведение, которое вы хотите вызвать, и вызывать этот метод при нажатии определенных клавиш.

Так, например, чтобы перейти к следующему элементу выбора, когда кто-то нажимает стрелку вправо, находясь на другом элементе выбора, я бы сохранял список всех элементов выбора на странице;когда нажата стрелка вправо, я найду позицию выделенного в данный момент выбора в этом списке, а .focus () следующий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...