2016-06-13 11 views
0

私は選択肢が2種類あります:ユーザーとグループ。ユーザーが選択されてもOKですが、グループが選択されている場合は、そのグループのエイリアスのようなグループを使用して、選択したアイテムをグループ内のユーザーのリストに置き換える必要があります。Selectize.jsの条件付きオプション

var options: [ 
      {text: 'Ironman', value: '1', type: 'user' }, 
      {text: 'Spiderman', value: '2', type: 'user' }, 
      {text: 'Black Widow', value: '3', type: 'user' }, 
      {text: 'Superhero', value: '4', type: 'group' } 
     ] 

私は選択肢を置き換える「アイアンマン」、「スパイダーマン」や「ブラックウィドウ」のリストを必要とし、「スーパーヒーロー」が選択されています。私は、オプションのリストを持っています。 選択を防止し、AJAXで取得したユーザーのリストに置き換える正しいイベントが見つかりません。

答えて

1

あなたは.on('change', handler) eventを使用することができます。

// When you create your selectize 
var $select = $("#select_id").selectize({ 
    // Options here 
}); 
var selectizeControl = $select[0].selectize; 


その後、あなたは私がそれを置き換えることができますどのように、グループ要素の値を取得する。このように

selectizeControl.on('change', function() { 
    var value = selectize.getValue(); 
    // From here you get the value, and do whatever you need with it 
    console.log(value); 

    if (options[value]["type"] == 'group') 
    { 
     var tmp = 0; 
     var users = ""; 
     // Here, do your ajax call to get your list from the value 
     ajaxCall(value, function(list) { 
      // I guess you'd have an array from your server 
      for (var user in list) 
      { 
       if (tmp > 0) 
        users += ","; 
       users += user; 
       tmp++; 
      } 
      $('#select_id').val(users); 
     }); 
    } 
}); 
+0

それにアクセスすることができますか? – MTS

+0

@MTS 'onChange'イベントでval( 'Ironman、Spiderman、Black Widow');'のようなことをやってみましたか? – tektiv

+0

問題は、グループの選択イベントを防止し、選択したグループに基づいてAJAXによってユーザー情報を収集する必要があることです。 – MTS