Радио-боксы не возвращаются в «проверенный» статус в Firefox - PullRequest
0 голосов
/ 24 октября 2011

Я заблудился из-за того, что моя форма радио-ящика не работает в Firefox 7.0.1, но отлично работает в IE, Chrome и Safari. Проблема в том, что переключаемые радиоблоки не сбрасываются на то, что показывает HTML.

Например, если я изменю настройку температуры с «f» на «c» и нажму «Выбрать», сценарий действия увидит правильные значения. Затем я нажимаю Back в FF и обновляю окно, "c" все еще выделено. Как уже говорилось, это работает, как и ожидалось, в других браузерах, но не в FF.

Мне трудно поверить, что в FF что-то базовое не работает, но HTML-код прост.

- Джефф

    <form name="form1" method="POST" action="weather_uom_set.php">        
    <h3>Precipitation</h3>
    <input type="radio" name="precip" value="in" checked="checked"/> Inches (")<br/>
    <input type="radio" name="precip" value="mm" /> Millimeters (mm)<br/>
    <h3>Temperature</h3>
    <input type="radio" name="temp" value="f" checked="checked"/> Fahrenheit (&deg;f)<br/>
    <input type="radio" name="temp" value="c" /> Celsius (&deg;c)<br/>
    <input type="submit" value="Submit" />
    </form>

Ответы [ 3 ]

1 голос
/ 24 октября 2011

Это может быть потому, что Firefox запоминает предыдущие значения отправки формы, которые могут переопределять любые варианты по умолчанию, которые вы определили в своем HTML. Кроме того, даже если вы не указали это здесь, я хотел бы отметить, что Javascript также может переопределять поведение HTML по умолчанию, поэтому, если у вас действительно работает скрипт, убедитесь, что он также не устанавливает / не переопределяет значение по умолчанию.

0 голосов
/ 19 июня 2015

Первоначально я сделал ошибку, установив флажок = в поле «нет» вместо установленного флажка = «истина».

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

<input type="radio" name="mybox" id="mybox_yes" value="1">
<input type="radio" name="mybox" id="mybox_no" checked="checked" value="0">

<script>

    var mybox = 0; // value 1 or 0 inserted with server side script

    if(mybox == 1){
        var fix_checkbox = function(){
            document.getElementById("mybox_yes").checked=true;
        };
    }
    else
    {
        var fix_checkbox = function(){
        document.getElementById("mybox_no").checked=true;
        };
    }

    setTimeout(fix_checkbox,1000);

</script>

Может быть, лучше сделать на стороне логического сервера только вывод нужной строки:

<script>
    setTimeout(function(){document.getElementById("mybox_no").checked=true;},1000);
</script>
0 голосов
/ 08 января 2012

Да, это базовое в Firefox не работает: https://stackoverflow.com/a/8779735/370290

...