Автоматическое предложение на стороне сервера Не ​​фильтровать значения - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть окно с предложением, где оно отлично работает, когда есть привязка источника на стороне клиента (здесь, например: availableTags)

$(function () {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"];
    $("#tags").autocomplete({
        source: availableTags
    });


});

http://jsfiddle.net/fwaq3dkz/28/

Но когда я меняю источник на стороне сервера, он по-прежнему перечисляет предложенные значения, но не фильтрует значения, которые я ввел в поле для предложений

$("#tags").autocomplete({
    source: function (request, response) {
        $.getJSON('/User/GetUsersJSONAsync', function (data) {
            var users = [];
            for (let key in data) {

                users.push(data[key].userPrincipalName);
            }
            response(users);
        });
    },    
});

http://jsfiddle.net/fwaq3dkz/31/

PS: приведенная выше скрипка не даст никакого ответа JSON, потому что она касается контроллера MVC в моем коде, который я не могу использовать в скрипте, это только для ознакомительных целей.

Означает, что когда я ввожу "A", в нем перечисляются все теги с "A" и "a" в первом случае, который является источником на стороне клиента. Но он не будет фильтровать во втором случае, являющемся источником на стороне сервера, он будет перечислять все.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Исправлено добавлением параметра на север, спасибо за подсказки @ user1672994

var textInputObj = {textValue: $ ("# search"). Val ()};

// Sets up the multicolumn autocomplete widget.
$("#search").mcautocomplete({
    // These next two options are what this plugin adds to the autocomplete widget.
    showHeader: false,
    columns: columns,   
    source: function (request, response) {

        var textInputObj = { textValue: $("#search").val() };

        $.getJSON('/User/GetUsersJSONAsync', textInputObj, function (data) {
            var users = [];

            for (let key in data) {
                   users.push(new Array(data[key].surname ? data[key].surname : "Blank", data[key].displayName, data[key].userPrincipalName));                 

            }          
            response(users);
        });
    },    
0 голосов
/ 27 апреля 2018

Возможно, из-за того, что это происходит асинхронно, вы пытались установить автозаполнение после возвращения ответа JSON? Например:

$(document).ready(function() {
    $.getJSON('/User/GetUsersJSONAsync', function (data) {
        var users = [];
        for (let key in data) {
            users.push(data[key].userPrincipalName);
        }
        $("#tags").autocomplete({
            source: users
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...