【问题标题】:jQuery-UI AutoComplete not working for dynamic fieldsjQuery-UI AutoComplete 不适用于动态字段
【发布时间】:2012-07-18 16:57:54
【问题描述】:

自动完成对静态字段有效,但对动态字段无效。

我尝试了.live() 方法,但无法正常工作。

这是我的 HTML:

<table>
    <tr class="selectmatprimas">
        <td>
            <input type="text" class="selectmatprima" />
            <input type="text" name="matprimas[]" />
        </td>
    </tr>
    <tr class="clone" style="display:none;">
        <td>
            <input type="text" class="selectmatprima" />
            <input type="text" name="matprimas[]" />
        </td>
    </tr>
</table>
<input type="button" value="addmore" id="addmore" />

​ 这是我的 JS:

var src = [
    {
        "label": "Mat\u00e9ria Prima 1",
        "value": "1"
    },
    {
        "label": "Mat\u00e9ria Prima 2",
        "value": "2"
    }
];

$("input.selectmatprima").autocomplete({
    source: src,
    select: function (event, ui) {
        event.preventDefault();
        this.value = ui.item.label;
        $(this).next().val(ui.item.value);
    },
    focus: function (event, ui) {
        event.preventDefault();
        this.value = ui.item.label;
        $(this).next().val(ui.item.value);
    }
});

$("input#addmore").click(function(){
    var a = $('tr.clone').html();
    var b = $('tr.selectmatprimas:last');
    b.after("<tr class='selectmatprimas'>"+a+"</tr>");
});

Online DEMO

如您所见,当我单击添加更多按钮时,自动完成功能在新字段上不起作用...

【问题讨论】:

  • 我发现做这种事情的最好方法是使用.on(因为不推荐使用.live)来处理动态加载的clickfocus事件输入,然后在该事件触发时设置自动完成

标签: jquery html json jquery-ui jquery-ui-autocomplete


【解决方案1】:

我只是用你的代码触及了表面,但这是一个有效的version

关键是 jQuery 的 on() 函数,您可以阅读有关 here 的信息

【讨论】:

  • 谢谢,它有效!但是用焦点代替键位不是更好吗?
  • 只是按照您的评论进行操作。再次检查链接。它适用于两者。
  • 我知道已经有一段时间了,但这完全帮助我停止了 2 天的挠头。非常感谢
猜你喜欢
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
相关资源
最近更新 更多