0

我有一个表单,我可以在其中添加具有自动完成功能的字段。
不是在我创建它们时将自动完成添加到每个字段,而是可以使用事件绑定来添加自动完成吗?
当谈到 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();
        });
}); 
4

2 回答 2

0

如果我正确理解您的问题,您是否希望将自动完成功能应用于所有输入字段?您可以通过概括您的选择器来做到这一点,因此$('input[name=addItem]')您可以使用例如$('input[type=text]')将您的事件绑定到属性“type”设置为“text”的所有输入标签。

根据您的应用程序,您是否要根据单击的输入字段更改建议的自动完成?这需要您的事件处理程序中的更多逻辑。

于 2010-09-27T03:08:05.070 回答
0

选项 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({ ... });
于 2010-09-27T03:47:50.833 回答