Radio Boxes未在Firefox中重置为“已检查”状态

时间:2011-10-24 13:31:33

标签: html forms firefox radio

我迷失了为什么我的收音机盒格式在Firefox 7.0.1中不起作用,但在IE,Chrome和Safari中工作正常。问题是“已检查”的无线电盒没有重置为HTML显示的内容。

例如,如果我将温度设置从“f”更改为“c”并按下“选择”,则操作脚本会看到正确的值。然后我按回到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 个答案:

答案 0 :(得分:1)

这可能是因为Firefox记住以前的表单提交值,它可以覆盖您在HTML中定义的任何默认选项。此外,即使你没有在这里说明,我也想指出Javascript也可以覆盖默认的HTML行为,所以如果你有一个脚本在运行,请确保它也没有设置/覆盖默认值。

答案 1 :(得分:0)

是的,这个基础在Firefox中被打破:https://stackoverflow.com/a/8779735/370290

答案 2 :(得分:0)

我最初错误地在“否”框中设置了checked = false,而不是在“是”框中设置checked =“true”。

但是,您可能会考虑我提出的类似修复,以确保您在页面加载时获得所需的值:

<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>