0

我的情况很简单。我有一个容器 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').autocomplete({ 查找:cityArray,... 等

然后自动完成不会应用于 paramName1。

我觉得这种创建输入文本框的方法效率很低。如何创建输入框并动态为其分配 id?此外,自动完成插件必须在新创建的输入框上工作。感谢您的关注。

PS:我想在那之后,在悬停/焦点上添加一个删除按钮,额外的功能会更容易。这是我的第一个 jQuery 项目。

4

1 回答 1

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 自动完成

于 2013-01-11T01:28:08.167 回答