2013-02-27 5 views
7

私はajaxでSelect2を使用しています。 すべてがうまくいきます。ユーザーが必要な項目をクリックすると、文書で指定されているように、いくつかの処理を行うon(変更)機能が使用されます。JQuery Select2、on(変更)機能でajaxデータにアクセスする方法は?

$("#e6").on("change", function(e) {   
     $('input#Destination').val(e.val); 
      }); 

}); 

戻り値(e.val)は、AJAX呼び出しからdata.id値ですが、私のデータオブジェクトは ""、 "ID" と "タイプ" を持っています。

私はdataFormatSelection()にコードを追加できますが、これは論理的ではなく、混乱します。

私はイベント..上( "チェンジ" で(だけではなく、 data.idの)全体 データオブジェクトにアクセスするにはどうすればよい
 function dataFormatSelection(data) { 
    console.log(data.name + "|" data.id + "|" + data.type); 
    return data.name; 
} 

答えて

18
$("#e6").on('change', function(e) { 
    // Access to full data 
    console.log($(this).select2('data')); 
}); 
+3

これがなぜ機能するのか説明できますか? – ford

+0

うわー、これは動作します...ありがとう! –

2

Select2 docs変化事象によると3を持っている必要がありますプロパティ:イベントオブジェクトには、次のカスタムプロパティが含まれます。

  • val:現在の選択(変更の結果を考慮) - IDまたはIDの配列
  • が追加さ:追加された要素があれば - 完全な要素オブジェクトを、削除だけID
  • ません:削除要素があれば - 完全な要素オブジェクトだけではなく、ID

さえあります例:

$("#e11").select2({ 
    placeholder: "Select value ...", 
    allowClear: true, 
    data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}] 
}); 

$("#e11_2").select2({ 
    placeholder: "Select value ...", 
    multiple: true, 
    data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}] 
}); 

$("#e11").on("change", function(e) { 
    console.log(JSON.stringify({val:e.val, added:e.added, removed:e.removed})); 
}).on("open", function() { 
    console.log("open"); 
}); 

$("#e11_2").on("change", function(e) { 
    console.log(JSON.stringify({val:e.val, added:e.added, removed:e.removed})); 
}).on("open", function() { 
    console.log("open"); 
}); 

しかし、私はmultiple: trueがオンのときaddedremovedプロパティのみが存在していることに気づきました。これが設計によるのか、それともバグなのか分かりません。とにかくそれを報告するつもりです。なぜなら、選択された要素を変更可能にすることは間違いなく必要なものだからです。

0

私は、コンソールログに示す値を取得し、それを使用することができますどのように疑問... がありますか?

私はこれらの値を取って、それぞれをvarに入れると正しいのですか? 作成した任意のvarに対してconsole.log(var)を使用すると、値が表示されますが、警告(var)を行うと、警告は表示されません。

AJAXでPHP関数を呼び出すために選択されたオプションの値を取る必要があります。

$("#e11").on('change', function(e) { 
    //I create a var data and works it like an Array 
    var data = $(this).select2('data'); 
    //Then I take the values like if I work with an array 
    var value = data.id; 
    var text = data.text; 
    //If I use console.log(var) the values are displayed but not with an alert 
} 

ありがとうございます!

+0

私はあなたが新しい質問を作成する必要があると思う、それは別の問題です –

+0

はい、申し訳ありませんが、理由があります...そのコードは正常に動作します! – PX10

+0

'$(this).select2( 'data')'は配列を返すので、 'data [Index] .id'でアクセスする必要があります – Dementic

関連する問題