2009-03-26 12 views
1

私が正確にやろうとしているのは、自分のscript.aculo.usをModalboxオブジェクトの中にロードしたときに自分のフォームのために働かせることです。JavaScriptのロード時(および内部)にJavaScriptコードを実行Modalbox

もちろん、スタンドアロンとしてフォームを読み込むときにオートコンプリータを試してみましたが、期待通りに機能します。参考のため、ここでは機能をロードする私のJSコードは次のとおりです。私もModalboxと呼ば

<span id="indicator1" style="display: none"> 
    <img src="/images/spinner.gif" alt="Working..." /> 
</span> 
<div id="autocomplete_choices" class="autocomplete"></div> 

(:

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やインジケータを持っています)とevalScripts:trueを比較します。

私は基本的に私の問題がどこにあるのか知っています:自分のオートコンプリートをフォームのロードに作成したいが、スクリプトが書かれたときにはウィンドウのオブジェクトは既にロードされているページ。

しかし、私は正直なところ、実際にどのようなイベントが発生したかはわかりません。私はそれが実際に可能かどうかも分かりませんが、私は確かにそれが願っています。

だからそれについてです。私は他に何を追加するか分からない。私の問題についての説明が必要な場合は、躊躇しないでください。

答えて

1

あなたがmodalboxのcallback functionsを知っていますか? afterLoadを使用すると、オートコンプリートを作成できます。

+0

ああ!自分の記事を書いた直後にあなたの答えを見ました。コールバックは結局のところ解決策であることが判明しました。どうもありがとう :) – Mathieu

1

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

私は関数の中で私の自動入力補完の作成を同封:

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()の呼び出しに、私は '後負荷' コールバックパラメータを追加しました:

onclick="Modalbox.show(this.href, {title: this.title, width: 470, evalScripts: true, afterLoad: function() { makeAutocompleters(); }}); return false;" 

は、次にそれが働いた:D

これは、同じ問題に遭遇した他の人のためです。

マチュー

+0

あなたがもっと速いように見えます。ええ、これが行く方法です。 – andi

関連する問題