0

在 WebUserControl 我有一个输入元素,我希望它使用 Jquery 自动完成显示值列表。它根本不起作用。

这是填充列表的脚本:

$(document).ready(function() {    
    var availableTags = [
            "ActionScript",
            "AppleScript",
            "Other one"
            ];
    $("#listaCecos").autocomplete({
        source: availableTags
    });
});

我建立了一个断点,发现:

  • 当 .autocomplete 行被执行时,$("#listaCecos")似乎未初始化。在控制台中,它显示以下内容:[]
  • 页面完全加载后,$("#listaCecos")正确显示元素[<input id=​"listaCecos" name=​"listaCecos">​]
  • 加载页面后,我可以在控制台上执行 .automcomplete 代码(代码块上方),输入开始正常工作。

所以,我想它不起作用,因为在执行 .autocomplete 脚本时,输入元素没有正确加载(它在 webusrcontrol 内,并且在初始页面加载时不可见)。

请帮助我确定我应该在何时何地放置自动完成设置脚本,以便正确填充输入。

4

1 回答 1

3

我设法解决了它。输入位于 UpdatePanel 内,它会替换其内容,因此会丢失自动完成配置。

解决方案是在每个 end_Request 上重新配置自动完成功能:

$(document).ready(function() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

    function EndRequestHandler(sender, args) {
        var availableTags = [
            "ActionScript",
            "AppleScript",
            "ceshar"
            ];
        $(".listaCecos").autocomplete({
            source: availableTags
        });
    } 
});
于 2012-07-13T16:47:53.537 回答