Обработка состояния радиобокса Javascript при перезагрузке страницы - PullRequest
0 голосов
/ 16 июня 2009

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

Однако существуют проблемы с тем, как браузеры часто кешируют, какой флажок установлен. IE, кажется, ждет, пока скрипт не завершит работу, а затем переключает, какой радиобокс выбран. Firefox, с другой стороны, запоминает, какой флажок установлен, и отображает его соответственно ... но свойство флажок игнорирует это. Я могу заставить Firefox синхронизировать эту информацию, сняв флажок и установив флажок (две закомментированные строки кода ниже), хотя это немного не по себе.

В настоящее время моя лучшая идея - генерировать радиоблоки с помощью скрипта, чтобы убить возможность браузеров их кэшировать. Кто-нибудь может предложить менее хакерскую альтернативу?

<br />
<input type="radio" name="DataRadio" checked="checked"
    Value="V1" onclick="doDataRadio()" />V1

<br />
<input type="radio" name="DataRadio"
    Value="V2" onclick="doDataRadio()" />V2

<br />
<input type="radio" name="DataRadio"
    Value="V3" onclick="doDataRadio()" />V3

function selCountry()
{
    var len = theForm.DataRadio.length;
    for (i = 0; i < len; i++) {
        if (theForm.DataRadio[i].checked)
        {
            chosen = theForm.DataRadio[i].value;
            //theForm.DataRadio[i].checked = false;
            //theForm.DataRadio[i].checked = true;
            alert(chosen);

        }
    }
}

1 Ответ

2 голосов
/ 17 июня 2009

Так как вы больше не показывали код. Я предполагаю, что вы хотите позвонить selCountry(), когда страница загружается.

Обычно с такой библиотекой javascript, как jQuery , запуск чего-либо при загрузке страницы происходит в функции $(document).ready(), как показано ниже:

$(document).ready({
  selCountry();
});

Без библиотеки javascript вам нужно сделать это следующим образом:

window.onload = function(){
  selCountry();
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...