2

我需要能够用 jQuery 替换击键。当按下右箭头时,我希望按下 tab 键。到目前为止,我有:

<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 是标签按钮。此外,模拟 keydown 递归调用事件处理程序,这显然很糟糕,但即使没有该行,这仍然不起作用。

我正在使用位于 (http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/simulate/jquery.simulate.js?r=6063) 的 jquery.simulate.js,因为我不能找不到仅使用 jQuery 模拟按键的方法。

按键只是不模拟实际的按键。

4

1 回答 1

2

您无法使用 javascript 模拟实际的按键。它是浏览器安全的核心组件。想象一下能够模拟 Alt-Tab 或 Ctrl-Shift-Del。

当然,您可以定义一个封装您想要触发的行为的方法,并在按下特定键时调用该方法。

因此,例如,当有人在另一个选择元素上按下右箭头时跳转到下一个选择元素,我会保留页面上所有选择元素的列表;当按下右箭头时,我会在该列表中找到当前焦点选择的位置,然后是 .focus() 下一个。

于 2011-05-19T20:52:23.843 回答