d0ublezer0
Мой дом здесь!
- Регистрация
- 21 Май 2009
- Сообщения
- 367
- Реакции
- 202
- Автор темы
- #1
мне в руки от предыдущего разработчика попался код, которые забирает JSONP данные для построения списка на jquery UI autocomplete, выводит его и при выборе помещает результат в поле формы
используется для ввода города в корзине Для просмотра ссылки Войдиили Зарегистрируйся
запрос данных такого типа Для просмотра ссылки Войдиили Зарегистрируйся
мне непонятны некоторые вещи: зачем выполняется перебор массива в success и select?
и, можно ли сделать выбор первого значения списка при потере фокуса автозаполнялки, если в ней не ткнули в значение?
change и blur в конце (на событие select) сделаны видимо чтобы запустить дальнейшую обработку onblur=javascript:Onepage.op_runSS(this);
используется для ввода города в корзине Для просмотра ссылки Войди
запрос данных такого типа Для просмотра ссылки Войди
мне непонятны некоторые вещи: зачем выполняется перебор массива в success и select?
и, можно ли сделать выбор первого значения списка при потере фокуса автозаполнялки, если в ней не ткнули в значение?
change и blur в конце (на событие select) сделаны видимо чтобы запустить дальнейшую обработку onblur=javascript:Onepage.op_runSS(this);
Код:
var $j = jQuery.noConflict();
$j("#city_field").autocomplete({
noSuggestionNotice: "Населённые пункты не найдены",
autoSelectFirst: true,
autoFocus: true,
minLength: 2,
source: function (request, response) {
$j.ajax({
url: "https://api.cdek.ru/city/getListByTerm/jsonp.php",
dataType: "jsonp",
data: {
q: function () {
return $j("#city_field").val()
}
},
success: function (data) {
response($j.map(data.geonames, function (item) {
Object.getOwnPropertyNames(data.geonames).forEach(function (val, idx, array) {
Object.getOwnPropertyNames(data.geonames[val]).forEach(function (val2, idx2, array2) {
});
});
try {
if (item.postCodeArray[0] !== 0 && item.postCodeArray[0] !== 'undefined' && item.postCodeArray[0] !== null) {
found_zip = item.postCodeArray[0];
zip_array[zip_line] = [];
zip_array[zip_line][0] = zip_line;
zip_array[zip_line][1] = item.id;
zip_array[zip_line][2] = item.postCodeArray[0];
zip_line++;
}
} catch (err) {
// обработка ошибки
}
return {
label: item.name,
value: item.name,
id: item.id
}
}));
}
});
},
select: function (event, ui) {
$j('#receiverCityId').val(ui.item.id);
//пробегаемся по массиву, чтобы вывести индекс в поле
for (var i = 0; i < zip_array.length; i++) {
if (ui.item.id == zip_array[i][1]) {
$j("#customer_note_field").empty();
$j('#address_2_field').val(zip_array[i][1]).focus().change().blur();
$j('#zip_field').val(zip_array[i][2]).focus().change().blur();
}
}
}
});