2016-06-22 7 views
0

Select2(バージョン4)で複数の選択メニューが生成され、各選択要素のid値が動的に設定されたフォームがあります。ユーザーがクリックするselect要素のidを探したいと思います。アクティブなSelect2要素のIDの検索方法

私は、これは

$('.js-example-tokenizer-ajax-data').on('select2:open', function (evt) { 
     myValue = $(this).attr('id'); 
}); 

を仕事を得ることができますしかし、私はとてもアクティブSELECT2要素のidを取得するオプションが必要とされているAJAX呼び出し内部dataのためのパラメータとしてmyValueを使用する必要があります。私はvar selectedEle = $(document.activeElement)を提案する記事を見ましたが、そこからIDを取得する方法はわかりません。

UPDATE

私が

function getSelectedElement(callback) { 
     $('.js-example-tokenizer-ajax-data').on('select2:opening', function (evt) { 
      myValue = $(this).attr('id'); 
      callback(); 
     }); 
    } 

としての機能とデータパラメータ

data: getSelectedElement(function() { 
      return JSON.stringify({variable: myValue}) 
     }), 

の値としてこれを含めることができるようです。しかし、いくつかのタイミングの問題があるため、まだあります選択した要素がクリックされる前にAjaxが起動するように見えるので、ページをロードするとエラーが発生する'NoneType' object has no attribute '__getitem__' I gページが読み込まれたときにmyValueの値が存在しなかったため、atherになりました。

選択したselect2要素のIDを取得する他のオプションはありますか?また、タイミングの問題を解決する方法はありますか?

+0

ajax呼び出しをトリガーするイベントはありますか?それはselect要素をクリックしていますか? – dlsso

+0

はい、Select2では、クリックイベントからIDを取得する方法がわかりません。 – tw1742

+0

推測で更新されていますが、html構造体や 'asex2'や' ajax'を見ることができないとあなたに与えることができます – dlsso

答えて

0

var selectedEle = $(document.activeElement)の場合、実際にはあなたが望む要素を得るのは、document.activeElement.idです。ポスターの更新に基づいて

アップデート:別のスタックオーバーフローで

が誰かに答えるthis.contextはあなたにthis.context.idはあなたのIDを与えるだろう、その場合には、正しい要素を与えるだろうと述べました。

+0

'document.activeElement.id'から値が得られません – tw1742

+0

document.activeElementをログに記録して、必要な要素が確実に取得されていることを確認しましたか?これは '.id'が動作するための前提条件であることを覚えておいてください。 – dlsso

+0

はい、私はちょうど ' ' – tw1742

関連する問題