我需要能够用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模拟按键的方法。
按键只是不模拟按键的实际按键。
答案 0 :(得分:2)
您无法使用javascript模拟实际的按键。它是浏览器安全的核心组件。想象一下能够模拟Alt-Tab或Ctrl-Shift-Del。
当然,您可以定义一个方法来封装您想要触发的行为,并在按下特定键时调用该方法。
因此,例如,当有人在另一个选择元素上按下右箭头时跳转到下一个选择元素,我会保留页面上所有选择元素的列表;当按下右箭头时,我会在该列表中找到当前聚焦的选择的位置,而.focus()则是下一个选择的位置。