14

jqueryとlivequeryプラグインを使用してselectドロップダウンの変更イベントを聞いています。

$(".myDropdown").livequery("change", function () {
});

私が気づいたことの1つ(私はFirefoxを使用しています)は

選択をフォーカスしているときに、イベントハンドラーが上下の矢印を押しても起動しません(上下の矢印はエントリを変更します)

矢印キーを上下に動かしたときに変更イベントが発生しないのはなぜですか?これに対する推奨事項または回避策はありますか?

4

4 に答える 4

5

マルヴォーリオの言うことが本当なら、それはうまくいくはずです

$(".myDropdown").livequery("change", function () {
   // your event handler
}).livequery("keypress", function() { 
   $(this).trigger("change");
});

証拠としてhttp://jsfiddle.net/tW6Su/2/

于 2012-04-29T11:29:11.230 に答える
2

要約すると思います。

選択ボックス内の項目をクリックすると、項目が変更されます。キーを押して選択ボックスを下に移動すると、Enter キーを押すか、オフをクリックするか、タブで移動するまで選択されません。これはブラウザーごとに少し異なると思いますが、基本的には、「このフォーム フィールドを完全に使用し、移動しました」イベントのようなもので選択が行われます。

結果をより迅速にしたい場合は、次のように変更イベントをトリガーできます。

$("select").live("keypress",function(){
    $(this).trigger("change");
});

すべてのフォーム フィールドで発生させたい場合は、次のセレクターを試してください。$(":input select textarea")

于 2012-05-05T02:28:02.910 に答える
1

この次のコード (とにかく Firefox 3.6 上) は OP に同意し、コメント作成者に同意しません:

$('body').append('<select/>').find('select')
    .append('<option>one</option)')
    .append('<option>two</option>')
$('body').find('select').keypress(function() { 
    console.log('keypress: ' + $(this).val()); })

矢印キーを押すたびに、変更された値がログに出力されます。

于 2011-09-16T23:35:17.053 に答える
0

値を変更しているにもかかわらず、要素がフォーカスを失うまで変更イベントは発生しません(Mavolio が証明したように)。次のコード スニペットは、いずれかのキーが押されたときに手動で change イベントを発生させます。

$("select").on("keypress",function(){
    $(this).trigger("change");
});
于 2012-05-05T02:39:38.837 に答える