0

这是我的代码:

$authorizedRow = $('.authorizedRows').html()

$("#name").autocomplete({
        source: "userlookup.cfm",
        minLength: 3,
        select: function(e, ui) {
            $('#email').last().attr('value',ui.item.mail).attr('disabled','disabled');
            $('#phone').last().attr('value',ui.item.phone).attr('disabled','disabled');
            $('.authorizedRows').last().append('<button class="deleteRow">x</button>');
            $('.deleteRow').button();
            $('#people').append('<div class="authorizedRows">' + $authorizedRow + '</div>').autocomplete( "option", "appendTo", "#name");
        },
        change: function(e, ui) {
            if (a) {
                //not used yet
            }
        }
    });

所以,我想做的是在输入字段上自动完成,当用户选择它时,它将自动填充另外两个字段。这三个字段(姓名、电话和电子邮件)都包含在我的 authorizedRows div 中。它将在“last”authorizedRows div 的末尾附加一个按钮,然后在“people”div 的末尾附加一个全新的 authorizedRows div。

我的问题是在新行追加后,自动完成将无法在新行中的新名称字段上工作。这是因为事件侦听器尚未附加到 DOM 元素。

如您所见,我尝试通过在人员 div 选择器上使用 .autocomplete('option') 来解决此问题。它没有用。有什么想法可以让自动完成功能在我动态创建的字段上工作吗?谢谢。

4

1 回答 1

0

我使用类选择器而不是 id 解决了它。

编辑:

如果有多个 ID,jQuery 选择器将只返回第一个,这就是为什么事件没有附加到其他动态创建的字段的原因。类的 jQuery 选择器将为每个匹配选择器的类返回一个数组。

于 2012-09-20T12:03:40.623 回答