2011-04-06 48 views
2

我使用jquery和javascript從客戶端設置上下文鍵時遇到問題。無法找到ASP.Net的AutoCompleteExtender函數set_contextKey。Asp.Net自動完成set_contextKey「對象不支持此屬性或方法」

這裏是我的文本框和AutoCompleteExtender HTML ...

<asp:TextBox ID="txtProduct" runat="server" AutoPostBack="true" OnTextChanged="txtProduct_TextChanged" Width="181px" /><ajaxToolkit:AutoCompleteExtender 
    ID="AutoCompleteExtender_txtProduct" BehaviorID="acExt" runat="server" TargetControlID="txtProduct" 
    CompletionListCssClass="autocomplete_completionListElement" CompletionListItemCssClass="autocomplete_listItem" 
    CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem" MinimumPrefixLength="2" 
    CompletionInterval="1000" ServicePath="~/WS/Service.svc" ServiceMethod="GetProductsByName" 
    EnableCaching="true" DelimiterCharacters=";" UseContextKey="true" OnClientItemSelected="txtProduct_ClientItemSelected"> 
</ajaxToolkit:AutoCompleteExtender> 

,並在下拉列表的變化jQuery是:

function ddlStore_onchange() { 
    $('#acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val()); 
} 

它是set_contextKey功能引發錯誤。任何人都可以解釋我做錯了什麼......

回答

3

我發現,這條線

$find('acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val());

更換線

$('#acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val());

解決了這個問題。不知道爲什麼,究竟是否有人可以幫忙?

+0

'$ find'是AJAX的,它返回的是整個組件,而不是一個簡單的'Javascript'或'jquery'對象,這就是爲什麼它能夠使用'$ find'找到'set_contextKey'方法。 – 2011-04-07 19:48:15

+0

這裏的問題是#字符,在jquery中用於引用對象的id。當您使用$ find時,您不需要#characer,因爲它不是jquery,只是在您的自動完成控件中使用或定義的BehaviorID。 – Juan 2015-04-22 01:46:41

1

因此,有真的,爲什麼第一個沒有工作2個問題:

  1. 從asp.net Ajax工具包使用$find()延伸對象,並增加了像.set_contextKey方法屬性。在相同的對象上使用jquery選擇器將不起作用。

  2. 此外,#acExt選擇器暗示客戶端id標記「acExt」。 asp.net(< 4.0)將爲實際的客戶端ID添加一個長前綴。

如果你想選擇在jQuery的asp.net服務器變量,使用屬性/的endsWith選擇$([id$='serverID'])代替。

相關問題