我有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 ==自动完成的后续重新加载时不会被评估。
令人惊讶的是,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>
-Alex
答案 0 :(得分:1)
您是否将DIV
的内容替换为完整的HTML树
<html>
<head>
<script>...
如果是,那么除非您通过创建IFRAME
元素包含此新树,否则浏览器会忽略您的内容。您应该只输出要放在DIV
内的内容(不带标记:HTML
,HEAD
及其所有标记BODY
),并且只包含{{1}内的内容}}。如果您需要BODY
,还可以在SCRIPT
内加入BODY
。
<强>更新强>:
更新问题后,我看到一个错误。也许这只是个问题,但让我们试试:
您拥有"#AUTOCOMP"
选择器,但您拥有<input type="text" name="AUTOCOMP">
。如果这就是您的内容的样子,那么您应该选择'input[name="AUTOCOMP"]'
选择器的输入。
答案 1 :(得分:0)
尝试将代码包装在add_load
:
Sys.Application.add_load(function () {
var availableTags = [
"ActionScript",
"AppleScript",
"Scala",
"Scheme"
];
$( "#tags" ).autocomplete({
source: availableTags
});
});