2017-01-26 6 views
5

wenn die select2 Mehrfachauswahl verwenden und die Auswahl einer Option, die ich diese Fehlermeldung angezeigt bekommen:jquery select2: Typeerror: b.dataAdapter null ist

TypeError: b.dataAdapter is null 

Wer weiß, worum es geht?

Die Multiselect funktioniert gut, ich frage mich nur über diese Nachricht.

EDIT:

Das ist mein html ist:

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

ist dies die jquery init:

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

Die Daten für die Mehrfachauswahl I, wenn ein Wert in einem anderen Dropdown gewählt wird '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 
        }); 
       } 
      } 
     }); 
    } 

Daten werden in den Multiselect geladen und alles funktioniert wie erwartet auf dem Bildschirm. Gerade in der Konsole erhalte ich die Fehlermesssage von

TypeError: b.dataAdapter is null

Dies ist meine Json Antwort (kurz):

{"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"}]} 

In Chrome ich diese Meldung:

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

Bitte posten Sie Ihren HTML-Code für das Element select und den js-Code, den Sie verwenden, um das select2-Plugin zu initialisieren. – andreivictor

+1

Ich habe eine Geige erstellt, aber ich konnte das Problem nicht reproduzieren. Keine Fehler in Chrome: https://jsfiddle.net/01b15mq/. – andreivictor

+0

Ich denke, ich bekomme das gleiche Problem, wenn ich versuche, meine select2 mit verschiedenen Tags zu aktualisieren. Ich habe dies von Firefox und Chrom überprüft. Beide werfen erros: # Chrom Version 56.0.2924.87 'Uncaught Typeerror: kann nicht lesen Eigenschaft 'current' von null' # firefox 51.0.1 ' Typeerror: b.dataAdapter ist null' Die jsfiddle aus verfügbar ist: https: // jsfiddle.net/PBrockmann/74v2gzhe/ – PBrockmann

Antwort

4

Seit selector2 Elemente neigen dazu, einige zusätzliche Daten zu speichern, habe ich bemerkt, wenn die Daten des Listenelements zusätzlich zu $(".participantSelector").empty() gelöscht wird der Fehler ist weg. Also, versuchen Sie es heraus auf diese Weise:

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

Hoffentlich es für Sie funktioniert auch.

0

Ich denke, das ist ein Problem, weil Sie Dropdown-Auswahl mit einem Nullwert initialisiert haben. Im Grunde wird das Skript, das Ihnen sagt, dass es herunterfährt, initialisiert, aber es sind keine Daten darin enthalten. Als Lösung fügen Sie bitte einen Wert

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

Rest der Dinge, wie richtig zu sein scheint.

2

sollten Sie .empty() entfernen und wie folgt verwenden. es funktioniert gut für Sie ..

$(".participantSelector").select2({ 
    placeholder: "Click here to select participants", 
    allowClear: false, 
    data: data 
}); 
Verwandte Themen