Как я могу использовать автозаполнение с привязкой событий? - PullRequest
0 голосов
/ 27 сентября 2010

это мой первый пост здесь, я нашел ответы здесь раньше У меня есть форма, куда я могу добавить поля с автозаполнением.
Вместо добавления автозаполнения к каждому полю при его создании можно ли использовать привязку событий для добавления автозаполнения? Я новичок, когда дело доходит до событий в JavaScript.
Это то, что я сделал, чтобы добавить новую строку, используя привязку событий (работает отлично).

$(function() {
    $('input[name=addItem]')
        .bind('click', function() {
            var line = $('#list > div').size()+1;
            divId = 'line-'+line;
            var divCloned = $('#line-1').clone();
            divCloned.attr('id', divId);
            $('#list').append(divCloned);
            var inputs = $(divCloned).children('input').get();
            for (var i in inputs) {
                inputs[i].value='';
                inputs[i].id = inputs[i].id.replace(/\d+/, line);
                inputs[i].name = inputs[i].name.replace(/\d+/, line);
            }
            this.blur();
        });
});  

Я даже не уверен, правильно ли изложил свой вопрос.
Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2010

Вариант 1: Копировать оригинал автозаполнения

Вы можете создать .clone(), который включает обработчики событий, используя .clone(true):

var divCloned = $('#line-1').clone(true);

Это должно включать автозаполнение для #line-1, поэтому со строкой выше, заменяющей соответствующую строку в вашем коде, вы должны быть полностью настроены.



Вариант 2: Создание нового автозаполнения с различными параметрами

Если вы хотите изменить функцию автозаполнения, вы можете просто установить ее снова:

var divCloned = $('#line-1').clone(); // <== Don't copy the event handlers.

// ... do things, set variables, append divCloned, whatever

  // Now set the autocomplete with different options from the original
divCloned.autocomplete({ ... });
0 голосов
/ 27 сентября 2010

Если я правильно понимаю ваш вопрос, вы хотите, чтобы автозаполнение было применено ко всем полям ввода?Вы можете сделать это путем обобщения вашего селектора, поэтому вместо добавления события к $('input[name=addItem]') (Значение: ко всем тегам типа «input» с атрибутом «name», установленным в «additem»), вы можете, например, использовать $('input[type=text]')который свяжет ваше событие со всеми тегами ввода с атрибутом «type», установленным в «text».

В зависимости от вашего приложения, вы хотите изменить предложенные автозаполнения в зависимости от того, какое поле ввода используетсянажал на?Для этого потребуется больше логики в вашем обработчике событий.

...