0

キーを押すアクションのクリックをトリガーする必要があります。また、キーボードスクリプトで上または下のキーを使用すると、指定要素からクラスが削除されます。したがって、キープレスは機能しますが、トリガーとアップダウンプレスは機能しません。これは私のコードです。

$('.main_search_field').keypress(function(evt){
    $('.live_search_plugin').addClass('visible');

    var scroll_pane = $('.scroll-pane');
        scroll_pane.click();
        scroll_pane.trigger('click');
    if (evt.keyCode == 40) {
        $('.live_search_list ul li').removeClass('active');    
    }
});  
4

3 に答える 3

3

次のコードを試すことができます:

var e = jQuery.Event("keypress");
e.which = 50;
$(".main_search_field").trigger(e);

e.which必要な文字の入力コード。

于 2013-01-11T14:17:13.313 に答える
0

次のようにevtキーが押されているかどうかを確認する必要があります。

if (evt.which == 40) {  }

キープレスを使用する場合、通常、関数内でコードを実行する前に、操作するキーを確認します。これを行わないと、コードはどのキーを押しても実行されます。

于 2013-01-11T14:08:55.070 に答える
0

.keypress()ここでは最善の解決策ではない可能性があります。keydown()keyup()を使用するか、フルバージョンを使用する方がよい場合があります.bind('keydown', handler):(キーアップの場合も同様)

jqueryドキュメントから:

注:keypressイベントは公式の仕様ではカバーされていないため、使用時に実際に発生する動作は、ブラウザー、ブラウザーのバージョン、およびプラットフォームによって異なる場合があります。 http://api.jquery.com/keypress/

.click()は省略形で.trigger("click")あり、問​​題なく使用していますが、実際にはクリックハンドラーがあります$('.scroll-pane)か?

コードによって(ブラウザーの依存関係を想定して)2回のクリックがトリガーされ$('.scroll-pane')、次にif()が評価されます。ただし、クリックハンドラーが表示されていないためscroll-pane、それが問題であるかどうかはわかりません。

于 2013-01-11T14:15:23.877 に答える