在javascript Modalbox的加载(和内部)上执行javascript代码

时间:2009-03-26 14:20:29

标签: javascript ajax prototypejs scriptaculous autocomplete

我正在尝试做的是让我的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”对象,因为它与调用页面基本上是相同的窗口

那就是说,老实说,我不知道它实际上会触发哪个事件。我甚至不知道它是否真的有可能,但我当然希望它是。

那就是......就是这样。我不知道还有什么要补充的。如果您需要澄清我的问题,请不要犹豫。

2 个答案:

答案 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 创建自动填充程序。