2017-12-29 7 views
0

Wie kann ich die letzten Ergebnisse löschen, bevor Select2 einen neuen Ajax-Aufruf startet? (Ohne die ursprünglichen select2-Dateien zu ändern)Clear Select2 vor Send Ajax

zu reproduzieren:

  1. Select2 mit Ajax-Funktion.
  2. Suchen Sie alles.
  3. Suche mit anderen Begriffen.
  4. Die alten Ergebnisse von Schritt 2 sind noch sichtbar, die Ajax-Abfrage von Schritt 3 ist fertig.
+0

Sie Leute erwarten diese Schritte zu erstellen, um Ihnen wirklich zu helfen? Wäre es nicht bequemer für Sie, den relevanten Quellcode mit Ihrer Frage zu teilen/einzubinden ... – NewToJS

+0

Es ist anders, um eine funktionierende Quelle für alle zu machen, wenn ich keinen Server kenne (welche Antworten die Ajax-Anfragen). – user6537157

+1

Ich sagte nicht "funktioniert" ich sagte teilen Sie den ** relevanten ** Quellcode. Wie sonst kann jemand das bestehende Problem identifizieren, das Sie haben? Sie können nicht davon ausgehen, dass jeder es auf die gleiche Weise schreibt wie Sie und ohne es zu tun, wird es unmöglich machen, den Grund für Ihr Problem zu erklären oder eine Lösung anzubieten, ohne eine vollständige Neuschreibung anzubieten. – NewToJS

Antwort

1

Innere Ajax data Handler Sie Elemente löschen können:

ajax: { 
    type: "POST", 
    url: '/echo/json/', 
    dataType: 'json', 
    data: function(params){ 
     console.log("ajax"); 
     // reset selection 
     $('.select').val(null).trigger('change'); 
     var query = { 
     search: params.term, 
     items: data 
     }; 
     return { json: JSON.stringify(query) } 
    }, 
    processResults: function (data, page) { 
     return { results: data.items }; 
    }, 
} 

Hier ist ein jsfiddle: https://jsfiddle.net/beaver71/jb07ehpq/

+0

Ich benutze Lade-Animationen und Fehlermeldungen. Für eine nette Benutzererfahrung habe ich den Code '$ ('. Select') geändert. Val (null) .trigger ('change');' zu: 'var results = $ (this) .data ('select2'). $ result.children(); if (results.length> 1) results.last(). Remove(); ' – user6537157