Приветствую всех!
Я только начинаю осваивать JS, и не могу понять уже вторые сутки, почему не срабатывает автокомплит подстановки адресов, если поле генерируется на js.
Есть форма с
<input name"adres[0]" value"" />
И ссылка
<a onclick="copyAddress();">Добавить адрес</a>
добавляющая такое же поле, и если добавить поле нажав на эту ссылку, то не срабатывает для добавленного поля автокоплит, но если в html разметить тег поля без генерации на js
<input name"adres[1]" value"" />
, то во всех полях всё нормально отрабатывает.
Причём индексы в названиях полей генерируются правильные.
С чем может быть это связано?
Помогите, пожалуйста, знатоки, мои познания JS пока на уровне обезьяны)
Вторые сутки не могу понять в чем причина и остановился на этом моменте(
Весь код html:
<html>
<head>
<title>Автокоплит</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/smoothness/jquery-ui.css" />
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.1/jquery-ui.min.js"></script>
<script src="autocomplete.js"></script>
</head>
<body>
<div class=adres>
<div class=row_adres>
Адрес: <input id=0 name="adress[0]" type="text" value="" />
</div>
</div>
<br />
<br />
<a onclick="copyAddress();">Добавить адрес</a>
</body>
</html>
Код autocomplete.js:
var search_result = [];
$(document).ready(function()
{
$('.adres').each(function(i, el)
{
var adress = $(el).find('[name^=adress]');
adress.keyup(function(){
var search_query = $(this).val();
search_result = [];
$.getJSON('http://geocode-maps.yandex.ru/1.x/?format=json&callback=?&geocode='+search_query, function(data)
{
for(var i = 0; i < data.response.GeoObjectCollection.featureMember.length; i++)
{
search_result.push
({
label: data.response.GeoObjectCollection.featureMember[i].GeoObject.description+' - '+data.response.GeoObjectCollection.featureMember[i].GeoObject.name,
value: data.response.GeoObjectCollection.featureMember[i].GeoObject.name.replace('undefined', ''),
longlat:data.response.GeoObjectCollection.featureMember[i].GeoObject.Point.pos
});
}
//подключаем к текстовому полю виджет autocomplete
adress.autocomplete({
source: search_result,
select: function(event, ui){}
});
});
});
$.ui.autocomplete.filter = function (array, term) {
return $.grep(array, function (value) {
return value.label || value.value || value;
});
};
});
});
//копирования поля для дополнительного адреса
window.copyAddress = function()
{
var $firstAddress = $('.row_adres:first');
var $lastAddress = $('.row_adres:last');
var $clone = $firstAddress.clone();
var $remove = $('<div class=""/>');
$clone.find('div').prepend($remove);
$clone.find('input').val('');
$lastAddress.after($clone);
setTimeout(function()
{
updateAddressIndex();
}, 0);
};
//обновление индексов
function updateAddressIndex()
{
$('.row_adres').each(function(i, el)
{
var $this = $(el);
$this.find('[name^=adress]').attr('name', 'adress[' + i + ']');
});
}