1

我有 DIV,里面有一个从 JQuery 示例复制的自动完成小部件:http: //jqueryui.com/resources/demos/autocomplete/default.html

按下按钮时,DIV 的内容被新的 HTML 替换,HEADER 包含动态生成的 Javascript 以初始化自动完成

<head> .. 
<script>
$(function() {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Scala",
        "Scheme"
    ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});

我的问题是: $(function()) 在 DIV == autocomplete 的后续重新加载不起作用时未进行评估。

意外惊喜,DIV 没有“就绪”事件

请告知如何重新初始化自动完成代码。

主页包含一个 PROJECT 选择器,在更改时将重新加载 DIV,其中包含动态生成的详细信息,包括自动完成小部件。

<html>
 <head>
  <script>
   function refresh_div() {
    ..    
    document.getElementById(DYNA_DIV).innerHTML = self.xmlHttpReq.responseText;
   }
  </script>
 </head>
<body>
 <select id=PROJECT_ID onchange="refresh_div()" ..>
 <div id="DYNA_DIV"> ..here is dynamically generated form with autocomplete widget containing items related to the PROJECT selected above</div>
</body>
</html>

DIV 的 HTML 如下所示。按照建议剥离 HTML、HEAD、BODY

首先加载自动完成工作。刷新 DIV 的内容时,下面的初始化脚本不运行

  ..  <input type="text" name="AUTOCOMP"> ..

 <script>
    $(function() {
        var availableItems = [ <% dynamically enumerate items for PROECT_ID %> ];

        $( "#AUTOCOMP" ).autocomplete({
            source: availableItems
        });
    });    

  </script>

-亚历克斯

4

2 回答 2

1

DIV用完整的 HTML 树替换内容吗

<html>
  <head>
    <script>...

如果是,那么除非您通过创建IFRAME元素来包含此新树,否则浏览器会忽略您的内容。您应该只输出要放入其中的内容DIV(没有标签:HTMLHEAD以及所有标签,BODY),并且只包含BODY. 如果这是您需要的,您也可以包含SCRIPT在里面。BODY

更新

更新您的问题后,我看到一个错误。也许这只是问题的错误,但让我们试试:

你有"#AUTOCOMP"选择器,但你有<input type="text" name="AUTOCOMP">. 如果这就是您的内容的样子,那么您应该通过'input[name="AUTOCOMP"]'选择器选择输入。

于 2012-11-22T09:39:53.200 回答
0

尝试将代码包装在add_load

Sys.Application.add_load(function () {

    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Scala",
        "Scheme"
    ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });

});
于 2012-11-22T09:33:05.583 回答