6 に答える
@FritsvanCampen による絶対に有効な発言に動機付けられて、私は腰を下ろし、自分で方法を考え出しました: 本当に必要だったのは、現在選択されている にアクセスする方法でしたval
。close
の代わりにselect2 の文書化されていない -event を使用することで、次のchange
ようにアクセスできます。
function onSelectChange(event){
alert( $("#select").select2("val") );
};
$("#select").select2().bind('close', onSelectChange);
http://jsfiddle.net/rb6pH/42/で更新された jsFiddle を見つけます。
同様の質問がここで尋ねられました。リンクのコードに基づいて、あなたの質問にフィドルを作成しました。 http://jsfiddle.net/rb6pH/55/
function onSelectChange(){
alert('changed');
};
var select2 = $("#select").select2().data('select2');
select2.onSelect = (function(fn) {
return function(data, options) {
var target;
if (options != null) {
target = $(options.target);
}
if (target) {
onSelectChange();
return fn.apply(this, arguments);
}
}
})(select2.onSelect);
私はあなたがこのリンクを参照するかもしれないと思う.私は一度同じ状況で立ち往生した.
Select2 のval()
メソッドを使用して選択が変更された場合、Change イベントは発生しません。
イベント オブジェクトには、次のカスタム プロパティが含まれています。
値
現在の選択 (変更の結果を考慮) - ID または ID の配列。
追加した
追加された要素 (存在する場合) - id だけでなく、完全な要素オブジェクト
削除されました
削除された要素 (存在する場合) - ID だけでなく、完全な要素オブジェクト
詳細については、これを参照してください。
ありがとう!
私は質問を読みましたが、それは私の問題に非常に近いので、別の質問を投稿しないことにしました. 私がやりたいのは、select2 を閉じた後、単純なテキスト入力がフォーカスされますが、機能しません。チェックしてください
function onSelectChange(){
alert('closed');
$('#hey').focus();
};
$("#select").select2().bind('close', onSelectChange);
$('#hey').on('focusin)', function(){alert('in');}
http://jsfiddle.net/sobhanattar/x49F2/5/
入力がフォーカスされていることを確認しようとしましたが、入力がフォーカスされていることが示されましたが、カーソルが表示されない理由がわかりません
var prev_val = $('#select2').val();
$('#select2').blur( function() {
if( $(this).val() == prev_val )
// not changed
else {
// changed
prev_val = $(this).val();
}
});