Выполнение кода JavaScript при загрузке (и изнутри) javascript Modalbox - PullRequest
1 голос
/ 26 марта 2009

Что я в точности пытаюсь сделать, так это заставить мой скрипт.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
    });
});

Тогда у меня есть div и индикатор Autocompleter, которые появляются в конце тела моего html:

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

Я также вызвал Modalbox () с evalScripts: true.

Таким образом, я в основном знаю, в чем моя проблема: я хочу, чтобы мои автозаполнители создавались при загрузке формы, но объект "window" уже загружен, когда скрипт написан, так как это в основном то же самое окно, что и вызывающая страница .

Тем не менее, я, честно говоря, не вижу, к какому событию это может быть когда-либо действительно инициировано. Я даже не знаю, возможно ли это на самом деле, но я, безусловно, надеюсь, что это так.

Так что ... вот и все. Я не знаю, что еще добавить. Не стесняйтесь, если вам нужны какие-либо разъяснения по моей проблеме.

Ответы [ 2 ]

1 голос
/ 26 марта 2009

Знаете ли вы о функциях обратного вызова modalbox ? Вы можете использовать afterLoad для создания автозаполнения.

1 голос
/ 26 марта 2009

ОК, похоже, я смог ответить на свой вопрос.

Я вложил свое автозаполнение в функцию:

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

Так вот, для всех, кто когда-либо сталкивался с той же проблемой.

Матье

...