如何在事件绑定中使用自动完成功能?

时间:2010-09-27 02:57:25

标签: jquery javascript-events jquery-autocomplete

这是我在这里的第一篇文章,我之前在这里找到了答案 我有一个表单,我可以添加具有自动完成功能的字段 在创建它们时,不是在每个字段中添加自动完成,而是可以使用事件绑定来添加自动完成功能吗? 当谈到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 :(得分:0)

如果我正确理解您的问题,您希望自动填充应用于所有输入字段吗?你可以通过推广你的选择器来做到这一点,所以不要将事件添加到$('input[name=addItem]')(含义:对于所有类型为“input”的标签,并将属性“name”设置为“additem”),你可以使用{ {1}}将您的事件绑定到属性“type”设置为“text”的所有输入标记。

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

答案 1 :(得分:0)

选项1:复制原始自动填充

您可以使用.clone(true)制作包含事件处理程序的 .clone()

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({ ... });