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

时间:2009-10-15 20:51:32

标签: jquery asp.net-mvc firefox

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

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

<input id="check1" type="radio" value="True" name="check" checked="checked"/>
<input id="check2" type="radio" value="False" name="check"/>

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

除了FF3.5之外,我在其他任何浏览器中都没有这个问题。

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

4 个答案:

答案 0 :(得分:0)

原来是bug in Firefox

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

解决方案:

<form autocomplete="off">

或者使用jQuery:

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

答案 3 :(得分:0)

当使用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
}