You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery autocomplete在动态生成的输入文本框中失效如何解决?(含AJAX调用)

解决克隆输入框无法触发jQuery Autocomplete的问题

问题根源

  • ID属性是唯一标识,克隆元素重复使用#school_name会导致选择器仅匹配首个元素
  • 原代码每次触发键盘/焦点/点击事件时重复初始化autocomplete,逻辑冗余且易引发冲突
  • 通过$(document).on()绑定autocompleteselect/autocompletechange属于过度委托,且与autocomplete内置回调机制冲突

修正方案

1. 调整HTML选择器

将原输入框的id="school_name"改为class="school_name",避免克隆后ID重复:

<input type="text" class="school_name" name="school_name" />

2. 封装Autocomplete初始化函数

把初始化逻辑封装为可复用函数,方便给新克隆的元素调用:

// 封装初始化函数,接收目标元素作为参数
function initSchoolAutocomplete($element) {
    $element.autocomplete({
        source: function(request, response) {
            $.getJSON(
                "https://api.apispreadsheets.com/data/JIbRHVPsNwrMkmav/?dataFormat=column&query=select Sxoleio,Moria from JIbRHVPsNwrMkmav where MM_ID = " + request.term,
                function(data) {
                    response(data['Sxoleio']);
                }
            );
        },
        select: function(event, ui) {
            $(this).val(ui.item.value);
            return false;
        },
        change: function(event, ui) {
            $(this).closest('.school').find('#school_points').val(7);
        },
        minLength: 3,
        delay: 250
    });
}

// 初始化页面中首个输入框
initSchoolAutocomplete($('.school_name'));

3. 处理克隆元素的初始化

假设你通过按钮触发克隆操作,在克隆完成后,主动给新生成的输入框初始化autocomplete:

// 示例克隆逻辑(请根据实际克隆代码调整)
$('.clone-btn').on('click', function() {
    // 克隆包含输入框的父容器
    var $newSchool = $('.school').first().clone();
    // 清空克隆输入框的内容(可选操作)
    $newSchool.find('.school_name').val('');
    // 将克隆容器添加到页面指定位置
    $('.container').append($newSchool);
    // 初始化新克隆输入框的autocomplete功能
    initSchoolAutocomplete($newSchool.find('.school_name'));
});

关键修改说明

  • 用class选择器替代ID,彻底解决克隆元素的选择器冲突问题
  • 封装初始化函数,避免重复编写逻辑,同时实现精准的单个元素初始化
  • 将select/change回调直接写入autocomplete配置,消除事件委托带来的冲突
  • 克隆后主动触发初始化,确保新生成的输入框拥有完整的autocomplete功能

内容的提问来源于stack exchange,提问作者pliroforiki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:09:59