在动态创建的输入字段上启用jQuery自动完成
我已经阅读了几乎所有关于如何实现这一目标的文章,但我仍然悲惨地失败了。 主要是因为我是jQuery / Javascript的业余爱好者。
我有一个包含一个输入元素的网站。 我已经设法让jQuery Autocomplete在这方面做得很好。 问题是当我使用.append方法动态添加其他元素时,这些新元素不适用于自动完成。
见jsfiddle: http : //jsfiddle.net/aktive/r08m8vvy/
see jsfiddle for full code sample
预先感谢您的帮助!! 🙂 – 迪恩
添加新元素后,必须绑定自动完成
$(wrapper).find('input[type=text]:last').autocomplete({ source: availableAttributes });
参见示例: http : //jsfiddle.net/r08m8vvy/4/
见http://jsfiddle.net/r08m8vvy/2/
为新输入提供ID并在其上调用自动填充。 您进行的初始自动编译调用将不包括动态添加的输入。
$(wrapper).append(''); //add input box $( "input[id="+ x +"]" ).autocomplete({ source: availableAttributes });
我更新了小提琴http://jsfiddle.net/r08m8vvy/5/
您必须绑定新元素的自动完成
$(wrapper).append($('').find(":text").autocomplete({ source: availableAttributes }));
我实际上发现一种更可靠的方法是使用’on’与’focus’动作绑定,以基于字段类初始化自动完成并在退出时使其失效。 通过这种方式,它可以清理垃圾,只在需要时才进行清理。
我正在使用它克隆行,甚至进行深度克隆,这将克隆行的加号和减号按钮,它没有克隆自动完成。
var auto_opts = {...opts...} $('body').on('focus', '.search_field', function(){ $(this).autocomplete(auto_opts).on('blur', function(){$(this).autocomplete('destroy')}); });
这也意味着你不会被迫使用最后一行,因为当你专注于它时它可以在字段上工作