1

我真正想做的是让我的 script.aculo.us 自动完成器在我的表单加载到 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
    });
});

然后我的 Autocompleter 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。

所以我基本上知道我的问题出在哪里:我希望在加载表单时创建我的自动完成程序,但是在编写脚本时已经加载了“窗口”对象,因为它与调用页面基本上是同一个窗口。

也就是说,老实说,我看不出它会真正触发哪个事件。我什至不知道这是否真的可能,但我当然希望它是。

所以..就是这样。我不知道还有什么要补充的。如果您需要对我的问题进行任何澄清,请不要犹豫。

4

2 回答 2

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

因此,对于遇到相同问题的其他任何人来说,就是这样。

马修

于 2009-03-26T14:32:41.077 回答
1

你知道 modalbox 的回调函数吗?您可以使用afterLoad来创建自动完成器。

于 2009-03-26T14:34:04.773 回答