2

キーストロークを 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 はタブ ボタンです。また、simulate 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 に答える