jQueryUI自动完成仅绑定到第一个元素

时间:2012-11-27 21:09:19

标签: jquery-ui jquery-ui-autocomplete

我有一个包含一行输入的表单。其中一个输入是jQueryUI自动完成,每行旁边都有一个按钮,用于克隆行,以便可以创建其他记录。我将自动完成集设置为识别并绑定到新创建的输入:

$( '.input .my-field' ).on( 'focus', function() {
  var $this = $( this );

  $this.autocomplete({ ... });
});

我发现的是:

  1. 第一行中的自动填充字段可以正常工作。
  2. 如果我没有在第一行输入该字段的值,则第二行中的自动填充字段可以正常
  3. 如果我 在第一行输入值,则第二行中的自动填充字段根本不起作用。
  4. 最重要的是,如果我首先创建所有行,一切都按预期工作,但这不是预期的用例。大多数人会输入第一条记录,点击添加另一条记录,输入这些值,点击添加另一条,冲洗,重复。

    我还在运行它,但我正在燃烧几个小时,所以我希望有人会知道发生了什么,并且能够使用一个解决方案,我不需要花费数小时才能解决问题。自己的。

1 个答案:

答案 0 :(得分:0)

在重新创建autocomplete输入之前,必须执行两个额外步骤:

  1. 删除aria-haspopup属性;
  2. 删除autocomplete数据。
  3. 只是打电话给autocomplete("destroy"),但由于某种原因,它会破坏原始输入而不是克隆。 jsFiddle的工作示例。相关代码如下:

    var clone = $(...)
        .clone(true)
        .removeAttr("aria-haspopup")
        .data("autocomplete",null);