2011-09-14 29 views
0

所以我發現堆棧上有很多關於如何複製表單行的帖子。得到了那個工作。我還在文本框中發現了許多關於自動完成的文章。jQuery - 表單行重複瓦特/自動完成

我需要兩者一起工作。基本上,我有一個可重複的小組成員部分,需要能夠完成他們的名字。問題是它只能在表格的第一個原始行上工作。

有人可以請我指導一篇文章,討論如何做到這一點?

回答

1

在自動完成的行/字段中使用.delegate。 使用容器ID或「body」錨定(如果您沒有)。

注意:這是用於UI自動完成而不是插件。 我使用一個委託,以便它可以被指定一次 - 不需要將它添加到新行中,例如從.clone()創建的那些行,以便它可以錨定到容器的唯一ID,以及第三個如果需要可以使用鏈接(哪個.live不支持)。我使用鏈式功能來自定義格式化渲染。

示例代碼:

$('#idOfRowsContainer).delegate('.classOfField', 'focusin', function() { 
    $(this).autocomplete({ 
    delay: 1000, 
// rest of my autocomplete 
    }) 
}); 

額外的例子與示例代碼鏈接的定製渲染:

$('#idOfRowsContainer).delegate('.classOfField', 'focusin', function() { 
    $(this).autocomplete({ 
      delay: 1000, 
     // rest of my autocomplete 
    }).data("autocomplete")._renderItem = function(ul, item) { 
       return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append("<a>" + item.Id + " <span class='autoCompCat'>" + item.Category + "</span> <span class='autoCompDesc'>" + item.Description + "</span></a>") 
      .appendTo(ul); 
    }; 
}); 
0

我不知道一篇文章,但只要你在新的文本輸入上調用jQueryUI的autocomplete()它應該工作正常。當你複製行時,你再次打電話給autocomplete()

+0

戴夫:我覺得我很困惑,當我重複的ID字段具有相同的名稱。我看到稱爲自動填充的唯一方法是引用字段ID: '$(「#tm」).autocomplete({});' – Zephree

+0

然後給它一個新的ID,或者使用一個類,或引用新行內的文本輸入,或...但是必須使用相同ID的DOM元素(技術上)無效。 –

+0

您可以不給元素一個類名,然後使用$(「.class」).autocomplete({source:tms}); ? – Steve