我的情况很简单。我有一个容器div。在其中我有一个名为tagName的输入框。为此,我附上了自动完成插件(jquery.autocomplete.js)。当发生下拉菜单,并且使用键盘或鼠标选择国家/地区时,我会捕获onSelect事件并声明
$('#tagName').autocomplete({
lookup: countriesArray,
onSelect: function () {
$(this).parent().append($('<input/>', {
value: '',
type: 'text',
name: 'paramName1',
id: 'paramName1'
}));
$('#paramName1').focus();
在onSelect中,我可以应用自动完成功能,但如果我结束此功能,然后说
$( '#paramName1')。自动完成({ lookup:citiesArray,... etc
然后自动完成不会应用于paramName1。
我觉得这种创建输入文本框的方法非常低效。如何创建输入框并动态为其分配id?此外,自动完成插件必须在新创建的输入框上工作。谢谢你的期待。
PS:我想在那之后,在悬停/焦点上添加一个删除按钮,额外的功能将更容易。这是我的第一个jQuery项目。
答案 0 :(得分:1)
您必须在$('#paramName1').autocomplete({ lookup: citiesArray,... etc.
功能中调用onSelect
。它不在外面工作的原因是因为该元素尚不存在。因此,无法应用自动填充功能。
如果您想动态识别id,可以使用变量来设置它。
这样的事情:
$('#tagName').autocomplete({
lookup: countriesArray,
onSelect: function () {
$(this).parent().append($('<input/>', {
value: '',
type: 'text',
name: 'paramName1',
id: myDinamicId
}));
$('#'+myDinamicId).autocomplete({ lookup: citiesArray,... etc.
$('#'+myDinamicId).focus();
有一个问题看起来很像你的。看看:jquery auto complete for dynamically generated textboxes