2016-05-27 19 views
2

ここに私のselect2 multiple selectをajaxで追加します。initSelectionでjqueryのselect2の値を追加する方法

当初、私はこの

initSelection : function (element, callback) { 
    var data = {id: 4, zipcode: "00602"}; 
    callback(data); 
}; 

ようinitselectionにいくつかの値を設定していますし、私は、Ajaxの選択をしています。

しかし、私は古い値を維持することができません。つまり、新しい選択を入力すると、追加する代わりに古い値が置き換えられます。

ここに私のコード全体があります。

var $select = $('#firstList'); 
$select.select2({ 
    placeholder : "Enter Pincode", 
    allowClear : true, 
    cache : true, 
    initSelection : function(element, callback) { 
     var data = { 
      id : 4, 
      zipcode : "00602" 
     }; 
     callback(data); 
    }, 
    ajax : { 
     url : "../getZipList", 
     type : "POST", 
     contentType : "application/json; charset=utf-8", 
     delay : 250, 
     data : function(params) { 
      //console.log(params) 
      return { 
       q : params.term, // search term 
       page : params.page 
      }; 
     }, 
     processResults : function(data, page) { 
      // parse the results into the format expected by Select2. 
      // since we are using custom formatting functions we do not need to 
      // alter the remote JSON data 
      return { 
       results : data.items 
      }; 
      //console.log(data.it) 
     }, 
     cache : true 
    }, 
    escapeMarkup : function(markup) { 
     return markup; 
    }, // let our custom formatter work 
    minimumInputLength : 1, 
    templateResult : formatRepo, // omitted for brevity, see the source of this page 
    templateSelection : formatRepoSelection // omitted for brevity, see the source of this page 
}); 

私はselect2 4バージョンを使用しています。ここで

はformatrepo

function formatRepo(repo) { 
    if (repo.loading) 
     return repo.text; 
    var markup = '<div class="clearfix">' + '<div clas="col-sm-10">' + '<div class="clearfix">' + '<div class="col-sm-6">' + repo.zipcode + '</div>' + '</div>'; 

    markup += '</div></div>'; 
    return markup; 
} 

function formatRepoSelection(repo) { 
    console.log(repo); 
    return repo.zipcode; 
    var cur_val = $('#zipcodeCollection').val(); 
    console.log(repo.zipcode); 
    if (cur_val) { 

     $('#zipcodeCollection').val(cur_val + "," + repo.zipcode); 
    } else { 

     $('#zipcodeCollection').val(repo.zipcode); 
    } 
    return repo.zipcode; 

} 

私は古い値を保持し、新しい値にそれを追加する何をすべきです。あなたがreturnであなたの最初のデータを追加する必要がprocessResults方法で

答えて

0

data.items[data.items.length] = initialdata; results: data.items

initialdataは、グローバル/オブジェクトスコープでなければなりません。

関連する問題