我正在尝试做的是让我的script.aculo.us Autocompleter在我的表单加载到Modalbox对象中时工作。
当然,我在单独加载表单时尝试过我的自动填充程序,它的运行方式与预期一致。作为参考,这是我的JS代码加载功能:
Event.observe(window, 'load', function() {
new Ajax.Autocompleter("gl_name", "autocomplete_choices", "<? echo WEB_ROOT . $page_name; ?>?action=ajax_autocomplete", {
paramName: "value",
minChars: 2,
indicator: 'indicator1',
afterUpdateElement: getSelectionIdGL
});
});
然后我的自动填充器div和指示器显示在我的html主体的末尾:
<span id="indicator1" style="display: none">
<img src="/images/spinner.gif" alt="Working..." />
</span>
<div id="autocomplete_choices" class="autocomplete"></div>
我还使用evalScripts调用了Modalbox():true。
所以我基本上知道我的问题在哪里:我希望我的自动填充程序被创建为表单的加载,但是在编写脚本时已经加载了“window”对象,因为它与调用页面基本上是相同的窗口
那就是说,老实说,我不知道它实际上会触发哪个事件。我甚至不知道它是否真的有可能,但我当然希望它是。
那就是......就是这样。我不知道还有什么要补充的。如果您需要澄清我的问题,请不要犹豫。
答案 0 :(得分:1)
我将Autocompleter创建包含在一个函数中:
makeAutocompleters = function() {
new Ajax.Autocompleter("ass_name", "autocomplete_choices", "<? echo WEB_ROOT . $page_name; ?>?action=ajax_autocomplete", {
paramName: "value",
minChars: 2,
indicator: 'indicator1',
afterUpdateElement: getSelectionIdAss
});
}
然后在我的ModalBox()调用中,我添加了'afterLoad'回调参数:
onclick="Modalbox.show(this.href, {title: this.title, width: 470, evalScripts: true, afterLoad: function() { makeAutocompleters(); }}); return false;"
然后它起作用了:D
所以在这里,对于遇到同样问题的其他人来说。
马修
答案 1 :(得分:1)
您是否了解modalbox的callback functions? 您可以使用 afterLoad 创建自动填充程序。