2016-11-25 3 views
0

ich Select2 bin mit Plugin wie folgt:Select2 mit Ajax - Ausgabe mit Auswahl von Werten

JS

function initAssignmentsAjax() { 

     $("#assignments").empty(); 

     $("#assignments").select2({ 
      placeholder: "Select an assignment", 
      allowClear: true, 

      ajax: { 
       url: "/Home/GetAssignments", 
       dataType: 'json', 
       delay: 250, 
       data: function (params) { 
        return { 
         q: params.term, // search term 
         page: params.page 
        }; 
       }, 

       processResults: processAssignmentsResult, 

       cache: true 
      }, 
      escapeMarkup: function (markup) { return markup; }, // let our custom formatter work TUTAJ WCHODZI PO assignmentsTemplateSelectionHandler 
      minimumInputLength: 3, //1 
      templateSelection: assignmentsTemplateSelectionHandler, 
      templateResult: assignmentsTemplateResultHandler 
     }) 
    } 

    function processAssignmentsResult(data, params) { 

     var json = JSON.parse(data.Data); 
     var x = $.map(json, function (item) { 
      return { 
       text: item.ProjectNumber + ' : ' + item.BatchName, 
       children: item.ChildItems, 
      }; 
     }) 

     return { results: x }; 
    } 

HTML

<select id="assignments" style="width: 500px;" ></select> 

Es funktioniert gut, wenn ich die Eingabe bin Werte von UI - es sendet Ajax-Abfrage an den Controller und am Ende präsentiert Werte in der Steuerung.

Ich habe auch unter Funktion (auf How to programmatically inject search queries into Select2 v4? basiert) Mehrwert programaticly eingeben

function selectAssignments(term) { 

    $("#assignments").empty(); 

    var assignmentElementControl = $("#assignments"); 

    assignmentElementControl.select2('open'); 

    // Get the search box within the dropdown or the selection 
    // Dropdown = single, Selection = multiple 
    var $search = assignmentElementControl.data('select2').dropdown.$search || assignmentElementControl.data('select2').selection.$search; 
    // This is undocumented and may change in the future 

    $search.val(term); 
    $search.trigger('keyup'); 
} 

zu suchen, wenn ich Seite und mit dieser Funktion von Browser-Konsole neu zu laden (oder binden Sie es an irgendeine Taste in UI) es funktioniert auch gut. Aber es funktioniert nicht, wenn ich versuche, zu suchen, indem ich Select2-Steuerelement (diesen Durchlauf) eingeben, aber wenn ich versuche, diese Funktion zu verwenden, führt es keine AJAX-Suchabfrage von Select2-Steuerelement aus (Suchliste öffnen, eingegebene Abfrage anzeigen, aber nicht Ajax feuern). Was kann die Verwendung der Select2 UI-Suche zur Folge haben?

Antwort

0

In Ihrer Funktion selectAssignments() versuchen, die change der select2 auslösen:

$search.val(term); 
$search.trigger('keyup'); 
$search.trigger('change'); //Here 
+0

ich versuche vor - nicht helfen. Aber danke für die Antwort – user3057544