克隆的自动完成输入无法正常工作

时间:2014-10-08 09:30:25

标签: javascript jquery jquery-autocomplete jquery-ui-autocomplete jquery-clone

我遇到了jQuery函数clone()的问题。我认为问题出在此方法的withDataAndEvents输入参数中。

最初,我正在编写一个包含动态行的表。我在点击仅放在第一行的按钮时动态添加行。第一行最初包含许多输入字段和组合框。每个字段都由ajax调用初始化。并且字段上的每个操作都会导致对行的整个字段进行刷新(过滤)。我还在输入字段上使用自动填充功能。

第一行完美无缺。但是,在克隆标记时:

  1. 如果我没有在第一行输入值,则克隆的第一行正常工作
  2. 如果我在第一行字段中输入一个或多个值,并且在克隆之后,只有第一行字段仍然有效。在这种情况下,如果我尝试更改组合框的值(为所有相关行字段触发更改事件),则尽管在更改自动完成数据时使用了ID,但第一行的字段仍会受到影响。单击按钮以克隆窗口小部件时,动态创建字段,组合框,表行。
  3. 我写的代码太长,所以我创建了一个fiddle并简化了案例并仍然遇到了同样的问题。

    我尝试了许多建议,例如我thisthis onethis one徒劳无功:-( (data.('autocomplete', null)autocomplete("destroy") ...)

    您对此问题有什么想法吗?

    提前致谢

2 个答案:

答案 0 :(得分:1)

除了测试中的拼写错误(您按类选择而不是按ID选择新元素),基本问题是您在将自动填充添加到DOM之前应用自动填充。

JSFiddle:http://jsfiddle.net/TrueBlueAussie/87jcw1y0/2/

我刚刚颠倒了这两行的顺序:

$('.body').append(clone);
applyAutoComplete2('#myinput' + inc);

原因......某些插件使用与DOM元素关联的存储数据,或者将事件附加到祖先等。对于断开连接的DOM元素,这些都不会发生,所以只需先将它附加到DOM。

答案 1 :(得分:0)

我想你问这个 请查看此链接http://jsfiddle.net/bsarunmca/87jcw1y0/3/

applyAutoComplete1( '#为myInput1');

$("button").click(function() {
    inc = inc+1;
    $('#myinput1').clone().attr('id','myinput'+inc).appendTo('.add-this');
    $('#myinput'+inc).val('');
    applyAutoComplete2('#myinput'+inc);

});