Firefox忽略选项selected =“selected”

如果您更改下拉列表并刷新页面,Firefox似乎忽略所选属性。

<option selected="selected" value="Test">Test</option> 

它实际上将select您之前select的选项(刷新之前)。 这最终成为我的一个问题,因为有一个事件触发下拉,改变其他事情。 有没有办法让Firefox停止这种行为(除了在页面加载时触发另一个事件)?

AFAIK,这种行为是硬编码到Firefox。

您可以尝试在页面加载时将每个表单元素设置为其defaultValue

autocomplete="off" HTML属性添加到每个select标签。 (来源: https : //stackoverflow.com/a/8258154/260080 )

这修复了FireFox中的ODD行为。

在Firefox中,我注意到,“select”属性将无法正常工作,除非您将select放置在窗体中,其中窗体具有名称属性。

刚刚有同样的问题,相信我已经超过10个小时与这个愚蠢的Firefox的行为挣扎,我有7个下拉菜单,他们每个人都会触发一个事件,并填写24隐藏input,所以你可以想象有正确的选项select24个错误的input值! 我终于find的解决scheme是重置窗体的JavaScript添加这行代码:

 window.onload = function() { document.forms['MarkerForm'].reset(); }; 

PS:input有从数据库中提取的值,所以重置表单并不会清空任何值,但是通过一种方式告诉Firefox返回到选定的select选项!

刷新时只是Firefox记住你以前的select。 尝试一个硬刷新。

另外,同样的问题在这里: https : //stackoverflow.com/a/1505693/1069232

另见这里: https : //bugzilla.mozilla.org/show_bug.cgi?id = 274795

我正在使用FF 25.0.1

它忽略了selected=""selected="selected"

但是,如果我只是尝试selected该选项被选中。

奇怪(不符合)的行为。 我知道selected是有效的HTML5,它是最短的格式,但我通常编写的代码也是格式良好的XML,这样我就可以使用任何XMLvalidation工具以非常严格的方式检查我的结果(并且数据交换非常简单。 ..)

根据W3C,这些变体应该在布尔属性上有效:

 HTML5: boolAttr="" | boolAttr="boolAttr" | boolAttr XHTML5: boolAttr="" | boolAttr="boolAttr" 

我更喜欢第一个,因为它和最后一个(不是xml一致)变体一样短,但是应该同时作为XHTML5和HTML5validation。 所以我希望Mozilla能够修复它!

在刷新页面之前,可以在窗体上调用.reset()

使用.prop()而不是.attr()

 This does not work in firefox. $( 'option[value="myVal"]' ).attr( 'selected', 'selected' ); use this one $( 'option[value="myVal"]' ).prop( 'selected', 'selected' ); In other way $( this ).prop( 'selected', 'selected' ); 

这可能是一个在Mozilla中的错误,但尝试给下拉的名字。

在表单属性中包含select,它将起作用。

 <!-- will not work in firefox --> <option selected="selected" value="Test">Test</option> 

 <!-- this will work in firefox --> <form> <option selected="selected" value="Test">Test</option> </form> 

自动完成function也不适合我。

这是我用jQuery写的javscript修复:

 $('input[type="radio"][selected]').click(); 

用这个名字更好= >>

 form id="UMForm" name="UMForm" class="form" 

select将采取选定的属性

要显示下拉菜单中的第一项,请使用ProjectName.ClearSelection();

在你的devise页面中放置线条以在所有浏览器上工作并且在页面加载时也将其放在代码后面。

 $(document).ready(function () { $("#content_ProjectName option[value='1']").prop("selected", true); }); 

如果你改变select并刷新页面,Firefox将恢复你的表单上的变化,这就是为什么你觉得select不工作。 而不是刷新,尝试打开新标签上的链接。

这是我的解决scheme:

 var select = document.getElementById('my_select'); for(var i=0; i < select.options.length; i++){ select.options[i].selected = select.options[i].attributes.selected != undefined; } 

我只是把它放在页面的顶部(用适当的id设置),它适用于我。 用循环replacegetElementById覆盖页面上的所有select,我将作为读者的一个练习;)。

对我而言,上述解决scheme都没有奏效。 如果没有设置,我必须明确地设置select:

 if (foo.find(':selected').length === 0) { $(foo.find('option')[0]).attr('selected', 'selected'); } 

我希望Firefox会解决这:(

在工作中,我只修复了一个错误,即在同一个网页上,select框选项在Chrome中正确显示,而不在Firefox中。 事实certificate,与上述问题完全不同,但可能是您遇到的问题。

在Chrome中,select框的字体颜色是黑色的。 出于某种原因,在Firefox中,select框从容器中inheritance了font-color,它是白色的。 一旦我添加了一个CSS规则来强制这个select框的font-color变成黑色,这个值就被正确的显示出来了。

 <option selected="selected" value="Test">Test</option> 

在这种情况下,这对Chrome和Firefox都有效。

 $('option[value="Test"]').prop('selected', true); 

我使用.attr()而不是.prop()

尝试禁用selectinput的autocomplete属性…有时浏览器忽略select因为这一点