HTML DOM: как вызвать метод обновления окна SELECT? - PullRequest
0 голосов
/ 28 июня 2009

Я пишу VB-приложение, которое взаимодействует с HTML DOM.

Если я зайду на эту страницу:

https://edit.yahoo.com/registration

А затем попробуйте изменить поле «Я предпочитаю содержимое из» ВЫБРАТЬ в правом верхнем углу на «Yahoo! Азия» из выбранной опции по умолчанию, я могу сделать это с помощью этой команды:

Document.Forms.regFormBody.preferredcontent.selectedIndex = 10

Это успешно меняет его. Но проблема в том, что это не то же самое поведение, как если бы вы вручную изменили этот параметр на Yahoo! Азия с помощью мыши.

Если вы попытаетесь сделать это вручную, не используя DOM, после его изменения страница обновится.

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

Может кто-нибудь помочь? Заранее спасибо.

1 Ответ

0 голосов
/ 28 июня 2009

Вы ищете событие onChange. Конечно, существует вероятность того, что форма будет отправлена ​​другим событием, например onBlur.

Обновлено после дополнительных вопросов из комментариев

Видимо, связан следующей строкой:

YAHOO.util.Event.on("preferredcontent", "change", ymem_reg.switchPrefContent);

Что вызывает следующее:

ymem_reg.switchPrefContent = function(e) {
    var Dom = YAHOO.util.Dom || false;
    if (Dom) {
        var oForm = Dom.get("regFormBody");
        var sToIntl = this.options[this.selectedIndex].value;
        var yregFormValidator = (typeof yregFormValidator !== "undefined") ? yregFormValidator: false;
        var fieldsWithDefaults = Dom.get(["firstname", "secondname", "dd", "yyyy"]);
        var clearVal = function(el) {
            if (el !== null && ymem_reg.fieldHasDefaultVal(el)) {
                el.value = "";
            }
        }
        if (oForm !== null && sToIntl !== "") {
            if (yregFormValidator) {
                yregFormValidator.disable();
            }
            var oInput = document.createElement("input");
            oInput.setAttribute("type", "hidden");
            oInput.setAttribute("name", "IntlSwapBtn");
            oInput.setAttribute("id", "IntlSwapBtn");
            oForm.appendChild(oInput);
            Dom.batch(fieldsWithDefaults, clearVal);
            oForm.submit();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...