2012-07-13 59 views
0

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

这是用于填充列表中的脚本:

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

我配合建立一个断点,并发现:

  • 当.autocomplete线被执行,$("#listaCecos")似乎uninitiallized。在控制台它显示了以下内容:在页面完全加载[]
  • 后,$("#listaCecos")显示正确[<input id=​"listaCecos" name=​"listaCecos">​]
  • 一旦页面被加载,我可以在控制台上执行.automcomplete代码(上面的代码块)的元件并且输入开始工作正常。

所以,我想这是行不通的,因为当.autocomplete脚本被执行时,输入元素没有被正确加载(它在webusrcontrol中并且在初始页面加载时不可见) 。

请帮助我确定应该在什么位置和什么时候放置自动填充设置脚本,以便输入得到正确填充。

回答

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 
     }); 
    } 
});