Javascript 在其选择方法中更改“自动完成”选项

Javascript 在其选择方法中更改“自动完成”选项,javascript,jquery,jquery-ui,events,dom,Javascript,Jquery,Jquery Ui,Events,Dom,这是我的密码: $authorizedRow = $('.authorizedRows').html() $("#name").autocomplete({ source: "userlookup.cfm", minLength: 3, select: function(e, ui) { $('#email').last().attr('value',ui.item.mail).attr('disabled','disab

这是我的密码:

$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
            }
        }
    });
$authorizedRow=$('.authorizedRows').html()
$(“#名称”).autocomplete({
来源:“userlookup.cfm”,
最小长度:3,
选择:功能(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('x');
$('.deleteRow').button();
$(“#人”).append(“+$authorizedRow+”).autocomplete(“选项”、“appendTo”、“名称”);
},
更改:功能(e、ui){
如果(a){
//还没用
}
}
});
所以,我要做的是在一个输入字段上自动完成,当用户选择它时,它将自动填充另外两个字段。这三个字段(姓名、电话和电子邮件)都包含在我的authorizedRows div中。它将在“最后一个”authorizedRows div的末尾追加一个按钮,然后在“人员”div的末尾追加一个全新的authorizedRows div

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


如您所见,我试图通过使用people div选择器上的.autocomplete('option')来解决这个问题。它不起作用。有没有办法让自动完成在动态创建的字段上工作?谢谢。

我用一个类选择器而不是id解决了这个问题

编辑:


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

对新输入调用.autocomplete()$(“#name”).last().autocomplete()这不起作用。您仍然需要为autocomplete传递与以前相同的选项。不确定$('#name').last()是否返回所需的正确元素。@标记这将导致无限次调用自动完成。第一个动态添加的行将具有此“第二个”自动完成事件侦听器,但当用户添加另一行时,我会遇到相同的问题,因为我仍然没有将事件侦听器附加到最新(第二个)动态创建的DOM元素。您是否希望添加的每一新行都具有自动完成功能?如果是这样,每个都需要自己的自动完成。您正在为每个输入创建一个新的autocomplete实例。这不是一件坏事,而是预期的行为。如果要使用诸如$('input').autocomplete()之类的选择器,它将为每个匹配的输入返回一个新的autocomplete实例。@aymeric I是首先出现问题的那个。这解释了我所做的改变,解决了这个问题。如果有多个字段,则ID的jQuery选择器将只返回第一个字段,这就是事件没有附加到其他动态创建的字段的原因。类的jQuery选择器将为与选择器匹配的每个类返回一个数组。那是我的问题,这解决了。对不起,我的错。然后为了让其他用户明白,你应该考虑接受(你的分数下的嘀嗒)你自己的答案(我马上删除我的评论)。