2016-02-21 17 views
5

Sto usando Select2 per un progetto. La seconda casella di selezione viene riempita a seconda dell'elemento selezionato nella prima casella, come mostrato nel link sottostante. Tuttavia, non posso fare clic sul primo elemento nella seconda casella di selezione per qualche motivo. L'unico modo per me di selezionare il primo elemento se lo desidero, è selezionare prima un utente diverso, quindi tornare al primo. Come posso risolvere questo?AJAX pieno Select2 non selezionabile

video:

enter image description here

Il mio codice:

Questa è la prima casella di selezione, ottenendo riempito da PHP regolare (laravel). Tutto funziona bene qui.

<div class="form-group"> 
    <label for="select"> Partner: </label> 
    <select id="select" name="select" class="searchselect searchselectstyle"> 
     @foreach($partners as $i => $partner) 
      <option {{$i == 0 ? 'selected' : ''}} value="{{$partner->id}}">{{$partner->name}}</option> 
     @endforeach 
    </select> 
</div> 

Qui è la seconda casella di selezione, con l'errore.

<div class="form-group" > 
    <label for="select2"> Hoofdgebruiker: </label> 
    <select id="select2" style="min-width: 200px;" name="select2" class="searchselect searchselectstyle"> 

    </select> 
</div> 


<script type="text/javascript"> 
$(document).ready(function(){ 
    var url = '/json/getusers'; 
    var $post = {}; 
    $post.id = $("select").val(); 

    $.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: url, 
     data: $post, 
     cache: false 
    }).done(function(data){ 
       $('#select2') 
         .find('option') 
         .remove() 
         .end(); 

       $.each(data, function(i, value) { 
        console.log(data); 
        $('#select2').append($('<option>').text(value.text).attr('value', value.id)); 
       }); 
      } 
    ); 
}); 

-

public function getusers(){ 
    if(!isset($_POST['term'])){ 
     $users = User::where('partner_id', $_POST['id'])->get(); 
    }else{ 
     $wildcard = '%'.$_POST['term'].'%'; 
     $users = User::where('partner_id', $_POST['id'])->where('email', 'LIKE', $wildcard)->get(); 
    } 

    $array = array(); 

    foreach($users as $i => $user){ 
     $array[$i] = array("id" => $user->id, "text" => $user->email); 
    } 
    return response()->json($array); 
} 
+0

Si è tentato di aggiungere un'opzione vuota ('') prima della funzione '$ .each'? –

+0

@ArmanOzak Questo mi dà una piccola opzione vuota, come qui: https://gyazo.com/17a79875dd28a43cac148f576c5eb659 – Markinson

+0

OK. Potresti anche aggiungere un 'data-segnaposto =" Tutto ciò che ti piace qui "sul tuo tag'