2013-10-10 26 views
1

讓我首先說我在使用JQuery 1.3.2版。此時升級不是一種選擇。在不在DOM中的表單上使用自動完成功能

我在之後發生頁面加載後,通過模板系統添加了一個窗體。我對JQuery非常陌生,但我的理解是live將允許我訪問它。

自動完成功能已經爲用戶搜索提供了幫助,並且效果良好。我想爲網站的管理員部分分享此功能以及查詢幾乎完全相同。

clientName元素來自動態添加的表單。如果我使用下面的代碼,則什麼都不會發生;沒有數據被檢索。

$('#clientName') 
    .site_clientAutocomplete(
    'admin', 
    function($event, $result, $data) 
    { 
     $('#clientName').val($data.ClientName); 
    } 
); 

如果我把它包裝在下面的代碼中,它會工作,排序。我必須在輸入框內單擊幾次,才能從數據庫中獲取任何內容。

$("#clientName").live('keydown', function(){ 

}); 

有人能告訴我如何讓這個自動完成功能正常嗎?

+0

無碼無應答 – Peter

+0

'僅供事件處理live'工作。它不檢測對DOM的更改並允許您對它們做出反應。您可以查看「livequery」插件,也可以在新內容加載到DOM時應用小部件。 –

+0

@AndrewWhitaker,謝謝安德魯。我現在來看看這個插件 – NaN

回答

1

live僅用於處理事件發生在與選擇器現在或將來匹配的元素上。如果您需要更強大的檢測與選擇器匹配的元素,您可以在添加內容時應用該小部件,也可以使用活動查詢,您可以「偵聽」與選擇器匹配的新元素並運行該事件發生時的功能。在你的情況,這會去是這樣的:

$('clientName').livequery(function() { 
    $('#clientName').site_clientAutocomplete(
     'admin', 
     function($event, $result, $data) 
     { 
      $('#clientName').val($data.ClientName); 
     } 
    ); 
}); 
+0

再次謝謝安德魯 – NaN

+0

@NaN:沒問題!樂意效勞。 –

相關問題