JQuery Autocomplete Как получить данные, вводимые пользователем в поле?
Как получить данные вводимые пользователем в поле? Например, пользователь вводит "Приве..." и через $.ajax в autocomplete приходит "Приве...". В функции в source: есть аргумент request, который по описанию подходит для этого, но как его передать в объект Label?:
source: function(request, response) { $.ajax({ url: Drupal.settings.basePath + "autocomplete_arguments/autocomplete", type: 'post', data: { input: request.term, maxItems: 12 }, success: function(data) { //При отсутствии результатов вывести виджет "Страница [данные в поле] не найдена" - то то и нужно сделать if(!data.length){ var result = [ { label: 'Страница' + request.term + 'не найдена', value: request.term} ]; response(result); } else{ response($.map(data, function(item) { return { value: item, label: "[" + item.name + "] " + item.title + " (" + item.created + ")" }; })); } } }); }, Помогите пожалуйста:help: :help: :help: :help: :help: :help: :help: :help: |
decadent42,
досточно в data прописать всё что вы указали в строках 21 и 22 [{"title":"orange","id":"l_25", "name" : "or", "created" : 2015 },{"title":"ррр","id":"1", "name" : "t", "created" : 2070 }] |
decadent42,
выше это для label: "[" + item.name + "] " + item.title + " (" + item.created + ")", value: item.id |
Т.е. вот так?
source: function(request, response) { $.ajax({ url: Drupal.settings.basePath + "autocomplete_arguments/autocomplete", type: 'post', data: { value: item, label: "[" + item.name + "] " + item.title + " (" + item.created + ")", input: request.term, maxItems: 12 , }, success: function(data) { //При отсутствии результатов вывести виджет "Страница [данные в поле] не найдена" - то то и нужно сделать if(!data.length){ var result = [ { label: 'Страница' + request.term + 'не найдена', value: request.term} ]; response(result); } else{ response($.map(data, function(item) { return { value: item, label: "[" + item.name + "] " + item.title + " (" + item.created + ")", }; })); } } }); }, |
decadent42,
нужные данные в data должен вернуть сервер -- в вашем коде ничего менять ненадо -- кроме строки 21 value: item, item должен быть обьектом, а value строкой то есть типа value: item.id |
Я просто совсем не понимаю, зачем что-то изменять в 21-22 строках, там ведь находится объект с возвращаемыми значениями, а мне нужно вывести виджет("Страница [данные из поля] не найдена"), когда значений нет, т.е. в if (строка 12 -16). :-?
|
decadent42,
всё у вас должно работать ... если форматы везде соблюдены ... пример ниже ... строка 27 для теста <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>autocomplete demo</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css"> <script src="http://code.jquery.com/jquery-1.10.2.js"></script> <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script> </head> <body> <label for="autocomplete">Select: </label> <input id="autocomplete"> <script> $("#autocomplete").autocomplete( { source: function(request, response) { $.getJSON("https://discovery.gdbilet.ru/Rzhd/Train/SearchStation", { limit: 10, q: request.term } ) .done(function(data) { data = []; if(!data.length){ data = [ { name: 'Страница ' + request.term + ' не найдена', countryCode: request.term} ] }; response($.map (data, function(item) { return { value: item.countryCode, label: item.name } } ) ); } ); }, minLength: 2, cache: false } ); </script> </body> </html> |
Спасибо!
|
Часовой пояс GMT +3, время: 00:31. |