2016-08-06 8 views
0

SELECT2します追加オプションは、私が選択し、以下のいる

<select id="street" name="client[street_id]" class="form-control select2" data-placeholder="Select or Insert The Street" style="width: 100%;"> 
    @foreach($streets as $street) 
     <option value="{{ $street->id }}">{{ $street->name }}</option> 
    @endforeach 
</select> 

と初期化:

$(".select2").select2({tags: true}); 

注複数がtrueに設定されていないこと。問題は、新しいオプション(タグ)を入力すると、最初にタグが追加されますが、リストの最初のタグが2番目のタグに置き換えられます。では、選択肢にオプションを追加して保持するにはどうすればよいですか? (各追加時に私はサーバーにDBに保存するよう要求します)。

https://jsfiddle.net/8c7ujd4g/

+0

は私が

+0

@ TheMatrixISRealなぜですか? –

+0

これは良いアプローチですか? https://jsfiddle.net/8c7ujd4g/1/ –

答えて

0

私はこの解決策を見つけた:それぞれの

$('.select2').on("select2:select", function(e) { 
     // what you would like to happen 
     if(e.params.data.isNew){ 

      $(this).find('[data-select2-tag="true"]').replaceWith($('<option selected>', { value : e.params.data.id }) 
        .text(e.params.data.text)); 

      $.ajax({ 
       // ... 
      }); 
     } 
    }); 

     $(".select2").select2({tags: true, 

      createTag: function (params) { 
       var term = $.trim(params.term); 

       if (term === '') { 
        return null; 
       } 

       return { 
        id: term, 
        text: term, 
        isNew: true // add additional parameters 
       } 
      } 
     }); 
関連する問題