2016-07-11 2 views
0

Есть ли способ сделать select2 control автоматически выбрать элемент, когда ответ ajax содержит дополнительные данные.select2 автоматически выбирает элемент для вызова ajax

Я хочу, чтобы мой контроллер в позиции JsonResult отмечался как точный mach, а затем, чтобы выбрать control2, выберите select, не открывая drop n down.

От пользователя prespecitve: Если пользователь вводит строку с текстом select2, которая точно соответствует элементу на контроллере. например Если пользователь вводит штрих-код и метод контроллера, найдите этот штрих-код. Select2 control немедленно выберет этот элемент без раскрывающегося раскрывающегося списка.

Если пользователь вводит запрос, который точно не соответствует контроллеру, будет возвращен список элементов без параметров, и select2 откроет раскрывающееся меню, чтобы показать пользователю возможность выбора элементов.

ответ

1

Чтобы сделать это с помощью AJAX, вам нужно добавить выбранный параметр к элементу выбора DOM, а затем вызвать изменение виджета select2, чтобы оно перерисовывалось. Ниже может быть то, что вы ищете. В этом примере используются processResults, чтобы проверить, есть ли ровно одно совпадение, и оно соответствует тому, что пользователь точно напечатал.

$("#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

Будет ли это работать внутри select2 определение ajax qery? – adopilot

+0

Я бы использовал это как часть обработчика изменений в элементе #barcode, поэтому, когда штрих-код был отсканирован, продукт будет обновляться. –

+0

Я обновил свой ответ, включив пример select2 definition, который позволит бэкэнду получить штрих-код в запросе ajax. –