2013-01-24 22 views
9

私たちは現在Chosen Dropdown Pluginを使用しています。単一のドロップダウンを使用しているときに、「選択された」コントロールにタブすると、実際のドロップダウン部分は表示されません。ただし、複数の「選択」にプラグインを適用すると、そのプラグインが表示されます。jQuery Chosen Plugin:タブ移動時にフォーカスをキャプチャする

ドキュメンテーションとGitHubの問題を鑑みると、タブの順序付けとフォーカスに関して多くの言及があるようですが、これはむしろ単純な要件を扱っているようです。タブ移動時にフォーカスを受け取ると、ドロップダウンを表示します。

この機能がプラグインの一部ではないと仮定すると、アンカータグのフォーカスをキャプチャするなどの代替手段がありますか?

$('.chzn-single').focus(function(e){ 
    alert('I should be focused!') 
});  

これまでのところ、私は成功しておらず、他の人がこの問題を経験しているのか疑問に思っていました。あなたが内部conainerを選択したthatsの検索入力ではなく、アンカー要素のフォーカスイベントを追跡する必要があります

答えて

8
  1. 問題を示し、このjsfiddleをチェックアウトすることができ、その後、選択したコンテナのためのマウスダウンイベントをトリガ - それはイベントですそれはあなたが委任イベントを使用する必要があるドロップダウンを開く

  2. に耳を傾け、動的に追加された要素にイベントハンドラをバインドするために近づいている(以前のjQueryの1.7.1とのために、あなただけの「ライブ」の方法を使用することができる)

  3. また、コンテナがアクティブであるかどうかを確認する必要があります$('#select').trigger('liszt:open');: - 現在、(選ばれたドロップダウンが開かれます検索入力が再び焦点を当てされます)再帰呼び出しを避けるために

 
$('body').on('focus', '.chzn-container-single input', function() { 
    if (!$(this).closest('.chzn-container').hasClass('chzn-container-active')) 
     $(this).closest('.chzn-container').trigger('mousedown'); 
     //or use this instead 
     //$('#select').trigger('liszt:open'); 
}); 

ことはここではまた、プラグインの内部イベントをトリガすることがjsfiddle

代わりの$(this).closest('.chzn-container').trigger('mousedown'); を働いています

+0

フィディはもう働いていません。おそらく、あなたは[cdnjs '](http://cdnjs.cloudflare.com/ajax/libs/chosen/1.0/chosen.jquery.js)ファイルを外部として使うことができますか? – Jawa

+0

@ジャワあなたは、問題で使用されたリンクでもう利用できない "選択された" jsプラグインを使用するのが正しいです。 私はあなたが言及したcdnを使ってjsfiddleを更新しました。それは選択コントロールのために少し別のクラスを持っていました - それに応じてjsfiddleでそれらを更新しました。 – paulitto

+0

ありがとう!私は最後に: $(document).on( "focus"、 ".chosen-container-single input"、function(){$(this).closest( 'selected- "。chosen-container-active")。trigger( 'mousedown');}); – colinbashbash

関連する問題