1

私が正確にやろうとしているのは、フォームがModalboxオブジェクト内にロードされたときに、script.aculo.usオートコンプリートがフォームに対して機能するようにすることです。

もちろん、フォームをスタンドアロンとしてロードするときにオートコンプリートを試しましたが、期待どおりに機能します。参考までに、機能をロードする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
    });
});

次に、HTMLの本文の最後に表示されるオートコンプリートのdivとインジケーターがあります。

<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

OK、結局、自分の質問に答えることができたようです。

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 に答える