2009-06-16 4 views
0

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

Однако есть проблемы с тем, как браузеры часто кэшируют этот флажок. Кажется, что 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); 

     } 
    } 
} 

ответ

2

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

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

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

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

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

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

+0

Благодарим вас, это не только устраняет проблему, но и работает без потери кешированной информации браузера. – Brian

Смежные вопросы