很遗憾,这对于 AutoCompleteExtender 的现有实例是不可能的。您可能对以下几种方法感兴趣
var x = $find("AutocompleteBehaviorID");//find the instance
x.get_completionListElementID();//get the ID of target textbox
x.set_completionListElementID();//set the ID of target textbox has no effect though :(
x._completionListElement();//direct access to DOM element that acts as target
这里的问题似乎初始化版本在控制工具包的阶段将附加事件附加到目标文本框init
(是的,客户端也有一个init
阶段)。当将初始化版本更改为目标时(如您所愿),则不会添加这些事件keypress
等blur
,因此您看不到任何更改。但是,如果您知道 javascript,您可以执行以下操作以使其适用于任何文本框。
$create(Behavior,{properties},{events},interfaces,target);
在哪里
行为
AjaxControlToolkit.AutoCompleteBehavior
特性
是一个 javascript 对象,如下所示(还有更多属性,但这些就足够了
{
"completionInterval": 1,
"completionListElementID": "empty panel id",
"completionListItemCssClass": "css class name",
"delimiterCharacters": ";",
"highlightedItemCssClass": "css class name",
"id": "CLIENTSIDEID",
"minimumPrefixLength": 1,
"serviceMethod": "WebMethodName",
"servicePath": "AbsolutePath to asmx file"
}
活动
还有更多活动可用
{
"itemSelected": jsFn,
"populated": jsFn
}
目标
目标元素是最重要的。正是这个文本框吸引了所有的事件、花里胡哨的东西。
$get("ELEMENT ID")
现在一切都结束了,您可以一直通过 javascript 初始化自动完成的实例。只需确保该 ID 已不存在即可。