2017-01-26 8 views
5

podczas używania wielokrotny select2 i wybierając opcję otrzymuję komunikat o błędzie wyświetlany:jquery select2: TypeError: b.dataAdapter jest null

TypeError: b.dataAdapter is null 

Czy ktoś wie o co chodzi?

Multiselect działa dobrze, po prostu zastanawiam się nad tą wiadomością.

EDIT:

To jest mój HTML:

<div class="form-group"> 
<label class="control-label col-md-12" for="participant-id">Participant  
<span class="required"> * </span> 
</label> 
<div class="col-md-12"> 
<input type="hidden" name="participant_id" value=""/> 
<select name="participant_id[]" multiple="multiple" class="form-control select2me participantSelector" required="required" id="participant-id"> 
<option value=""></option> 
</select> 
</div>         
</div> 

to init jQuery:

$(".select2me").select2({placeholder:"Select",width:"auto",allowClear:!0}))} 

Dane za wielokrotny otrzymuję jeśli wartość nie jest wybrana w innym menu rozwijanego "projectSelector":

$('.projectSelector').on('change', function() { 
     var targetProject_id = $('#project-id :selected').val(); 
     updateParticpantDropdown(targetProject_id); 
    }); 


function updateParticpantDropdown(selectedProjectId){ 
     $.ajax({ 
      type: "POST", 
      url: '/xx/projects/xx/'+ selectedProjectId, 
      dataType : "json", 
      success: function (response, status) { 
       if (response.result == "success"){ 
        var data = response.data; 
        $(".participantSelector").empty().select2({ 
         placeholder: "Click here to select participants", 
         allowClear: false, 
         data: data 
        }); 
       } 
      } 
     }); 
    } 

Dane są ładowane do multiseleksu i wszystko działa zgodnie z oczekiwaniami na ekranie. Wystarczy w konsoli otrzymuję messsage błędu

TypeError: b.dataAdapter is null

To jest moja odpowiedź JSON (w skrócie):

{"result":"success","data":[{"id":18,"text":"xx, Ana Rosa"},{"id":17,"text":"xx, Saul"},{"id":14,"text":"xx, Jesus"},{"id":15,"text":"xx, Jose Sergio" 
},{"id":13,"text":"xx, Guadalupe"},{"id":12,"text":"xx, Adolfo"},{"id":25 
,"text":"xx, Roland"},{"id":16,"text":"xx, Mariela Elisa"},{"id":11,"text":"xx, Roberto Carlos "},{"id":19,"text":"xx, Jose Rafael"},{"id":2,"text":"xx, Juan Carlos"}]} 

W Chrome wyświetla się następujący komunikat:

select2.full.min.js:2 
Uncaught TypeError: Cannot read property 'current' of null 
    at HTMLSelectElement.<anonymous> (select2.full.min.js:2) 
    at HTMLSelectElement.dispatch (jquery.min.js:3) 
    at HTMLSelectElement.r.handle (jquery.min.js:3) 
    at Object.trigger (jquery.min.js:3) 
    at HTMLSelectElement.<anonymous> (jquery.min.js:3) 
    at Function.each (jquery.min.js:2) 
    at n.fn.init.each (jquery.min.js:2) 
    at n.fn.init.trigger (jquery.min.js:3) 
    at d.select (select2.full.min.js:1) 
    at d.select (select2.full.min.js:2) 
+0

Proszę dodaj swój html dla wybranego elementu i kodu js, którego używasz do zainicjowania wtyczki select2. – andreivictor

+1

Stworzyłem skrzypce, ale nie udało mi się odtworzyć twojego problemu. Brak błędów w Chrome: https://jsfiddle.net/01zb15mq/. – andreivictor

+0

Myślę, że pojawia się ten sam problem, gdy próbuję zaktualizować mój select2 o różne znaczniki. Sprawdziłem to z firefox i chrome. Oba erros Rzut obronny: # Chrome w wersji 56.0.2924.87 'Uncaught TypeError: nie można odczytać właściwość 'aktualny' z null' # firefox 51.0.1 ' TypeError: b.dataAdapter jest null' jsfiddle jest dostępna pod adresem: https: // jsfiddle.net/PBrockmann/74v2gzhe/ – PBrockmann

Odpowiedz

4

Od selector2 elementy mają tendencję do przechowywania dodatkowych danych. Zauważyłem, że po usunięciu danych z elementu listy, oprócz $(".participantSelector").empty(), błąd zniknął. Wypróbuj go w ten sposób:

var selector = $(".participantSelector"); 
selector.empty(); 
selector.removeData(); 
selector.select2({ 
    placeholder: "Click here to select participants", 
    allowClear: false, 
    data: data 
}); 

Mam nadzieję, że to działa również dla Ciebie.

0

Myślę, że to jest problem, ponieważ zainicjalizowano listę rozwijaną select z wartością pustą. Zasadniczo skrypt inicjujący rozwijanie jest inicjalizowany, ale nie ma w nim żadnych danych. Jako rozwiązanie należy dodać jedną wartość

<option value="0">Please Select</option>

Reszta rzeczy wydaje się prawidłowe.

2

powinieneś usunąć .empty() i użyć jak poniżej. to działa dobrze dla ciebie ..

$(".participantSelector").select2({ 
    placeholder: "Click here to select participants", 
    allowClear: false, 
    data: data 
}); 
Powiązane problemy