2016-07-11 9 views
0

Gibt es eine Möglichkeit, select2-Steuerelement automatisch ein Element auswählen, wenn AJAX-Antwort zusätzliche Daten enthalten.select2 automatisch Element für AJAX-Anruf auswählen

Ich möchte meinen Controller zu implementieren in JsonResult markieren Element als genau mach und dann select2 Steuerelement automatisch wählen Sie, dass, ohne zu öffnen Drop n unten.

Vom Benutzer prespecitve: Wenn Benutzer in select2 Textbox Zeichenfolge eingeben, die exakt auf Element auf Controller übereinstimmen. z.B. Wenn Benutzer Barcode und Controller-Methode eingeben, finden Sie diesen Barcode. Das Select2-Steuerelement wählt dieses Element sofort aus, ohne das Dropdown-Menü zu öffnen.

Wenn der Benutzer Abfrage eingeben, die nicht genau übereinstimmt, wird der Controller die Liste der Elemente ohne Param exact zurückgeben, und select2 öffnet Dropdown, um dem Benutzer eine mögliche Auswahl an Elementen anzuzeigen.

Antwort

1

Um dies mit AJAX auszuführen, müssen Sie dem ausgewählten DOM-Element eine ausgewählte Option hinzufügen und dann eine Änderung am Widget select2 auslösen, damit es neu gezeichnet wird. Unten kann sein, wonach Sie suchen. In diesem Beispiel wird mit processResults überprüft, ob genau eine Übereinstimmung vorhanden ist, und sie stimmt mit dem überein, was der Benutzer genau eingegeben hat.

$("#product_id").select2({ 
    ajax: { 
    url: "/api/productLookup", 
    dataType: 'json', 
    data: function (params) { 
     return { 
     term: params.term, 
     }; 
    }, 
    processResults: function (data) { 
     var searchTerm = $("#product_id").data("select2").$dropdown.find("input").val(); 
     if (data.results.length == 1 && data.results[0].text == searchTerm) { 
      $("#product_id").append($("<option />") 
       .attr("value", data.results[0].id) 
       .html(data.results[0].text) 
      ).val(data.results[0].id).trigger("change").select2("close"); 
     } 
     return data; 
    }, 
    minimumInputLength: 8, 
    cache: true 
    } 
}); 
+1

Funktioniert dies in select2 Definition von Ajax qery? – adopilot

+0

Ich würde dies als Teil des Änderungshandlers auf dem Element # barcode ausführen, also wenn der Barcode gescannt wurde, würde das Produkt aktualisiert werden. –

+0

Ich aktualisierte meine Antwort, um eine select2 Beispieldefinition einzuschließen, die es dem Backend ermöglichen würde, den Barcode in der Ajax-Anfrage zu bekommen. –

Verwandte Themen