使用Autocomplete jQuery插件时,如何在OnSelect事件上动态创建输入框?

时间:2013-01-11 01:10:31

标签: jquery jquery-ui input autocomplete onselect

我的情况很简单。我有一个容器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项目。

1 个答案:

答案 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