JQuery автозаполнение отображения выходной строки - PullRequest
2 голосов
/ 21 октября 2011

Я хочу, чтобы скрипт отображал каждый элемент в списке значений из строки с разделителями-запятыми.

ex.«один, два, три, четыре»

В раскрывающемся списке автозаполнения должно отображаться:

один два три четыре

Тем не менее, текущий код, показать списоктолько одного символаДолжен быть простой способ разбить этот список и отобразить слово вместо символа.Мой javascript немного ограничен, и если бы кто-то мог понять это для меня, я был бы признателен.Благодарю.Я искал вокруг и знаю, что вы должны иметь возможность переопределить функцию разбора, но это должно быть проще, чем это.Кроме того, я использую веб-сервис для возврата строки и может быть ограничен чем угодно, но для этого нужно показать слово.

Если кто-нибудь знает ответ, я был бы признателен ... спасибо

       $("#CustomerID").autocomplete({
            source: function(request, response) {
               $.ajax({
                type: "POST",
                url: "/customer/search.asmx/findvalue",
                dataType: "json",
                data: {
                    term: request.term
                },
                error: function(xhr, textStatus, errorThrown) {
                    alert('Error: ' + xhr.responseText);
                    },
                success: function(data) {
                    response($.map(data, function(item) {
                        return {
                            label: item,
                            value: item
                        }
                    }));
                }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            alert('Select');
        }
    });

РЕДАКТИРОВАТЬ ----------------------

Спасибо предыдущему постеру за помощь в ответах.

Вроде бы нюансы форматирования или что-то в этом роде.

Это работает:

success: function (data) {
    response($.map(data, function (item) {
        return item.split(",");
    }));   
},

Использование этого похоже на ошибку или ничего не делает:

        success: function(data) {
            response(data.split(","));
        }

Я даже пробовал это, оно проходит, но не приводит к выпадающему меню:

success: function (data) {
    response($.map(data, function (item) {
        response(item.split(","));
    }));   
},

Кажется, что выше работает и отображает то, что я хочу, не уверен, что это эффективно.Если кто-то хочет объяснить, почему?Не уверен, почему в некоторых случаях вам понадобится response () и / или обратный порядок, чтобы автозаполнение работало ....

1 Ответ

1 голос
/ 21 октября 2011

Попробуйте использовать .split(), чтобы разбить вашу строку на массив строк (в качестве источника для виджета автозаполнения требуется массив).

$("#CustomerID").autocomplete({
    source: function(request, response) {
       $.ajax({
            type: "POST",
            url: "/customer/search.asmx/findvalue",
            dataType: "json",
            data: {
                term: request.term
            },
            error: function(xhr, textStatus, errorThrown) {
                alert('Error: ' + xhr.responseText);
                },
            success: function(data) {
                response(data.split(","));
            }
        });
    },
    minLength: 2,
    select: function(event, ui) {
        alert('Select');
    }
});
...