29.10.2015, 14:52
|
Интересующийся
|
|
Регистрация: 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 + ")"
};
}));
}
}
});
},
Помогите пожалуйста
|
|
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 }]
|
|
29.10.2015, 15:10
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
decadent42,
выше это для
label: "[" + item.name + "] " + item.title + " (" + item.created + ")",
value: item.id
|
|
29.10.2015, 15:37
|
Интересующийся
|
|
Регистрация: 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 + ")",
};
}));
}
}
});
},
|
|
29.10.2015, 15:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
decadent42,
нужные данные в data должен вернуть сервер -- в вашем коде ничего менять ненадо -- кроме строки 21
value: item,
item должен быть обьектом, а value строкой то есть типа
value: item.id
|
|
29.10.2015, 16:08
|
Интересующийся
|
|
Регистрация: 26.10.2015
Сообщений: 17
|
|
Я просто совсем не понимаю, зачем что-то изменять в 21-22 строках, там ведь находится объект с возвращаемыми значениями, а мне нужно вывести виджет("Страница [данные из поля] не найдена"), когда значений нет, т.е. в if (строка 12 -16).
|
|
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.
|
|
30.10.2015, 21:55
|
Интересующийся
|
|
Регистрация: 26.10.2015
Сообщений: 17
|
|
Спасибо!
|
|
|
|