Клуб API Карт

Множественные инпуты и SuggestViews

rpr354
24 сентября 2016, 15:29

Добрый день.

На сайте поля input[type="text"] добавляются через JQuery

$("#inputlar").append("<p class='second_address'><span>" + count + "</span><input id='pac-input" + count + "' class='controlsInput' type='text' placeholder='Город, улица, дом, строение, корпус' data-count='" + cnt +"'/><em class='addr_remove'>&times;</em></p>");

Т.е. изначально в DOM их не существует.

Подключаю автоподсказку к каждому инпуту:

function onLoad (ymaps) {
    var inputs = document.getElementsByClassName("controlsInput");
    var suggestView;
    for (var i = 1; i < inputs.length+1; i++) {
        console.log(i);
        suggestView = new ymaps.SuggestView(['pac-input'+i], {
            boundedBy: [[40.817717596787695, 45.810683499999996], [54.95398155782081, 87.99818349999998]]
        });
        suggestView.events.add('select', function(e){
            console.log(e.get('item').value);
        });
    }
}

Работает только с первым инпутом, а остальные - ошибка: Cannot read property 'SuggestView' of undefinedonLoad. Не могу понять, как сделать автоподсказку для множественных инпутов

2 комментария
Подписаться на комментарии к посту
Конструктор SuggestView принимает строку (id) или DOM-элемент.
Вы передаете в него массив
new ymaps.SuggestView(['pac-input'+i]
Вот так всё заработало:
var suggestView = [];
for (var i = 1; i < inputs.length+1; i++) {
suggestView[i] = new ymaps.SuggestView('pac-input'+i, {

boundedBy: [[40.817717596787695, 45.810683499999996], [54.95398155782081, 87.99818349999998]]
});
suggestView[i].events.add('select', function(e){
console.log(e.get('item').value); 

}