在缓存刷新时在FF中重置单选按钮

(这在技术上是我之前发布的StackOverflow问题的附录,但是我的原帖提出了一个不同的问题,这个问题并没有真正涵盖这个主题 – 我不想编辑我的旧问题,因为我认为这个问题已经不同了值得自己的页面)

在Firefox 3.5(仅限FF3.5)中浏览我的网站时,我遇到了一个带有两个单选按钮的页面,其中包含以下HTML代码:

  

此页面按预期呈现,选中“check1”并取消选中“check2”。 当我按Control + R刷新页面时,两个单选按钮呈现,但即使原始HTML代码相同(如上所述),它们也都未选中。 如果我执行缓存未命中刷新(通过Control + F5或Control + Shift + R),页面将返回到您期望的方式。

这不是我尝试的任何其他浏览器中的问题,除了FF3.5。

是什么原因导致这些单选按钮在正常刷新时重置? 我怎么能避免这个?

原来这是Firefox中的一个错误 。

我用这个来强制firefox重置刷新时检查的radiobuttons。

 $(function(){ $('input[name="radiobuttongroup"]')[0].checked = true; }); 

解:

 

或者使用jQuery:

 $(document).ready(function() { if ($.browser.mozilla) $("form").attr("autocomplete", "off"); }); 

当使用jquery更改选择时,我们在firefox中遇到了类似的错误。 即使代码根据firebug正确更改,也没有选择单选按钮。 我们找到的解决方案是从DOM中删除单选按钮,然后将它们放回去。

 var allradiobuttons = $('...'); allradiobuttons.click(function() { var radiobutton = $(this); allradiobuttons.removeAttr("checked"); radiobutton.attr("checked", "checked"); var parent = radiobutton.parent(); parent.html(parent.html()); // This is a weird fix }