1

div (id = div_search_fields) があり、その中にいくつかの jQuery Chosen ドロップダウンがあります。div に接続されているキープレス キャプチャ リスナーがあり、押されたキーが Enter キーの場合、非表示の送信ボタンをクリックして選択したものを送信します。

$("#div_search_fields").keypress(function(e) {
    if (e.which == 13) {
        $("#hiddenSubmitButton").click();
    }
});

何らかの理由で、選択したドロップダウンのいずれかでオプションを選択したばかりの場合、このリスナーは呼び出されません。「div_search_fields」DIV 内にも単純なテキスト入力ボックスがあり、そこにテキストを入力して Enter キーを押すと、期待どおりにリスナーがトリガーされます。

これは、選ばれたドロップダウンに焦点を当てることと関係があるに違いありませんが、その理由を理解できませんか? 何か案は?

4

2 に答える 2

1

2つのこと:

  1. keypress イベントがバインドされた後にドロップダウンの入力が動的に生成される場合、イベントはそれらの要素にバインドされません。

  2. ID は 1 つの要素に対して一意である必要があります。アクションを複数の要素にバインドする場合は、代わりにクラスを使用してください。

代わりに .on() を使用します。

$(".div_search_fields").on("keypress", function(e) { . . . });
于 2012-10-11T13:42:10.970 に答える
1

私が見る限り、選択された Jquery は keypress イベントで e.preventDefault() を使用しているため、コードの実行が許可されていません。目標を達成するためにオーバーライドできる関数がいくつかあるはずです。または、e.preventDefault() に乗ることができます。

于 2012-10-11T14:09:35.913 に答える