我在使用jquery和javascript从客户端设置上下文密钥时遇到问题。它无法找到ASP.Net的AutoCompleteExtender的函数set_contextKey。
这是我的文本框HTML和AutoCompleteExtender ...
<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函数上抛出错误。谁能解释我在这里做错了什么......
答案 0 :(得分:3)
我发现更换了这行
$('#acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val());
这一行
$find('acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val());
解决了这个问题。不知道为什么,有人可以帮忙吗?
答案 1 :(得分:1)
所以第一个不起作用的原因确实存在两个问题:
使用asp.net中的$find()
ajax工具包扩展对象并添加方法属性,如.set_contextKey
。在相同对象上使用jquery选择器将不起作用。
此外,#acExt
选择器意味着客户端ID标记“acExt”。 asp.net(&lt; 4.0)将为实际的客户端ID添加一个长前缀。
如果要在jQuery中选择asp.net服务器标签,请改用属性/ endswith selector $([id$='serverID'])
。