2016-02-21 7 views
5

Używam Select2 dla projektu. Drugie pole wyboru zostanie wypełnione w zależności od wybranego elementu w pierwszym polu, jak pokazano w poniższym łączu. Jednak z jakiegoś powodu nie mogę kliknąć pierwszego elementu w drugim polu wyboru. Jedynym sposobem dla mnie, aby wybrać pierwszy element, jeśli chcę, to najpierw wybrać innego użytkownika, a następnie z powrotem do pierwszego. Jak mogę to rozwiązać?Wypełniona AJAX Select2 niemożliwa do kliknięcia

wideo:

enter image description here

Mój kod:

To pierwsze pole zaznaczania, uzyskiwanie wypełniona przez regularne PHP (laravel). Wszystko działa dobrze tutaj.

<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> 

Oto drugie pole wyboru, z błędem.

<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

Czy próbowałeś dołączyć pustą opcję ('') przed funkcją '$ .each'? –

+0

@ArmanOzak To daje mi małą pustą opcję, jak tutaj: https://gyazo.com/17a79875dd28a43cac148f576c5eb659 – Markinson

+0

OK. Czy mógłbyś też dodać '' data-placeholder = "Cokolwiek chcesz tutaj" 'na twoim tagu'