复制行/clone行绑定JQuery UI.autocomplete事件无效解决办法

在复制带有autocomplete事件的一行或一个文本框时,即使使用深克隆,新复制的文本框代码看起来和原来的一样,但无法触发autocomplete事件,网上找了些资料,写的都不是很清楚,最后自己通过翻看API解决,关键代码分享给大家,直接上代码:

$(function() {
    addAutocomplete(); //页面加载完成时已存在行,注册autocomplete事件
    // 添加行按钮
    $("#addLineBtn").on('click', function() {
        $("input[name='format_name']").autocomplete("destroy"); //最关键的一步,先销毁autocomplete事件,后面再重新注册事件
        var $productFromat = $($(".productFromat").get(0)).clone(true);//克隆第一行,深克隆,行内其它输入框或按钮的事件也要克隆
        $productFromat.appendTo("#productFromatTab"); // 追加到表格
        addAutocomplete(); //重新注册事件
    });
});

//自动补全功能
var dataCache = {};
// 注册autocomplete事件的方法
function addAutocomplete() {
    // 给文本框注册autocomplete事件
    $("input[name='format_name']").autocomplete({
        minLength: 1,
        delay: 500,
        source: function(request, response) {
            var term = request.term;
            if (term in dataCache) {
                response(dataCache[term]);
                return;
            }
            // 查询后台数据,并缓存
            $.getJSON("/ajaxQueryURL.do", request, function(data, status) {
                dataCache[term] = data;
                response(data);
            });
        }
    });
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值