JQuery автозаполнение: как разбить строку результата? - PullRequest
0 голосов
/ 07 апреля 2010

У меня следующая ситуация с плагином автозаполнения на странице .aspx.Работает нормально.Результат поиска автозаполнения дает идентификатор продукта, и описание продукта объединяется с ним (то есть 2099 - Продукт)Я знаю, что мне нужно использовать split () с этим, но куда мне его поместить?Я все еще довольно плохо знаком с jQuery и javascript.

$(document).ready(function() {
  $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
     mustMatch: true 
  });
});

Ответы [ 3 ]

1 голос
/ 07 апреля 2010

Если это то же самое автозаполнение , которое я использовал (Томас Кирда), вы сможете добавить событие onSelected так:

$(document).ready(function() {
  $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
     mustMatch: true,
     onSelect: function(value, data) { autoCompleteSelected(value, data); }
  });
});

function autoCompleteSelected(value, data) {
    var parts = data.split("--");
 ... do something with parts

}

Очевидно, что если это не так, то у него будут разные события

0 голосов
/ 30 июня 2010

сделать этот код для разделения

<script type="text/javascript">
    $(function() {
        var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];
        function split(val) {
            return val.split(/,\s*/);
        }
        function extractLast(term) {
            return split(term).pop();
        }

        $("#tags").autocomplete({
            minLength: 0,
            source: function(request, response) {
                // delegate back to autocomplete, but extract the last term
                response($.ui.autocomplete.filter(availableTags, extractLast(request.term)));
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function(event, ui) {
                var terms = split( this.value );
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join(", ");
                return false;
            }
        });
    });
    </script>
0 голосов
/ 07 апреля 2010

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

"Pandas enjoy tasty bamboo".split(' ')

Приведенное выше разбивает строку на пробелы, возвращая следующий массив:

["Pandas", "enjoy", "tasty", "bamboo"]

Любая строка может быть передана в функцию split, и она отлично справится с многосимвольными строками.

Теперь, что касается вашего вопроса с плагином автозаполнения jQuery, вам нужно, чтобы ваша страница .aspx возвращала массив параметров JS, чтобы он работал. Кроме того, вы можете загрузить данные другим способом, а затем передать массив для автозаполнения. Если сервер возвращает массив, подобный следующему, вы можете передать его напрямую:

["1234 -- Chicken", "4321 -- Noodle", "1432 -- Irrational Monkeys"]

Дело в том, что автозаполнение использует массив для сопоставления.

Документы для плагина автозаполнения кажутся достаточно приличными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...