Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.10.2015, 14:52
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

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 + ")"
              };
            }));
			}
          }
        });
      },


Помогите пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 29.10.2015, 15:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

decadent42,
досточно в data прописать всё что вы указали
в строках 21 и 22
[{"title":"orange","id":"l_25", "name" : "or", "created"  : 2015 },{"title":"ррр","id":"1", "name" : "t", "created"  : 2070 }]
Ответить с цитированием
  #3 (permalink)  
Старый 29.10.2015, 15:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

decadent42,
выше это для
label: "[" + item.name + "] " + item.title + " (" + item.created + ")",
                value: item.id
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2015, 15:37
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

Т.е. вот так?
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 + ")",

              };

            }));

            }

          }

        });

      },
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2015, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

decadent42,
нужные данные в data должен вернуть сервер -- в вашем коде ничего менять ненадо -- кроме строки 21

value: item,

item должен быть обьектом, а value строкой то есть типа

value: item.id
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2015, 16:08
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

Я просто совсем не понимаю, зачем что-то изменять в 21-22 строках, там ведь находится объект с возвращаемыми значениями, а мне нужно вывести виджет("Страница [данные из поля] не найдена"), когда значений нет, т.е. в if (строка 12 -16).
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2015, 17:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

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>

Последний раз редактировалось рони, 29.10.2015 в 17:28.
Ответить с цитированием
  #8 (permalink)  
Старый 30.10.2015, 21:55
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать данные в другую панель из выбранной строки таблицы. layout: 'card'. Пролетарий ExtJS 5 03.06.2015 22:53
Как получить в JQUERY каждую строку как отдельный объект? Alex1233 Общие вопросы Javascript 3 22.08.2014 06:54
Как получить данные Dikkiy jQuery 1 26.03.2014 12:08
Как передать данные из jqGrid в текстовое поле? Rooner jQuery 2 27.09.2012 19:31
JQuery как получить url? Memfis jQuery 8 29.07.2011 01:39