Search the Community
Showing results for tags 'autocomplete'.
-
мне в руки от предыдущего разработчика попался код, которые забирает JSONP данные для построения списка на jquery UI autocomplete, выводит его и при выборе помещает результат в поле формы используется для ввода города в корзине https://www.resursmed.ru/cart запрос данных такого типа https://api.cdek.ru/city/getListByTerm/jsonp.php?q=нижний мне непонятны некоторые вещи: зачем выполняется перебор массива в 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(); } } } });