Firefox 忽略选项 select = “ select”

如果更改下拉菜单并刷新页面,Firefox 似乎会忽略所选属性。

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

它实际上将选择您以前选择的选项(在刷新之前)。这最终成为我的一个问题,因为有一个事件触发的下拉列表,改变其他事情。

有没有办法让 Firefox 停止这种行为(除了在页面加载时触发另一个事件之外) ?

98977 次浏览

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

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

如果您更改选择并刷新页面,Firefox 将恢复您对表单的更改,这就是为什么您感觉选择不起作用的原因。不要刷新,试着在新标签页上打开链接。

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

只是有同样的问题,相信我,它已经超过10个小时与这个愚蠢的火狐行为斗争,我有7个下拉框,每个都会触发一个事件,并填写24个隐藏的输入,所以你可以想象有24个错误的输入值选择了正确的选项!我最终找到的解决方案是用 Javascript 添加以下代码重新设置表单:

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

PS: 输入有从数据库中提取的值,所以重置表单不会清空任何值,但在某种程度上告诉 firefox 回到地狱选择 = 选择选项!

向每个选择标记添加 autocomplete="off" HTML 属性。

(资料来源: https://stackoverflow.com/a/8258154/260080)

在 firefox 中,我注意到除非将 select 放在表单中,否则“ select”属性将无法工作,因为表单具有 name 属性。

我使用的是 FF 25.0

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

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

奇怪(不一致)的行为。我知道 selected是有效的 HTML5,它是最短的形式,但我通常编写代码,也验证良好形式的 XML,所以我可以使用任何 XML 验证工具,检查我的结果在一个非常严格的方式(和数据交换是非常容易的...)

根据 W3C 的说法,这些变量应该对布尔属性有效:

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

我更喜欢第一个,因为它几乎和最后一个(不符合 xml)变体一样短,但是应该同时验证为 XHTML5和 HTML5。所以我希望 Mozilla 能修好它!

只是 Firefox 在刷新时会记住你之前的选择。

还有,这里也有同样的问题: https://stackoverflow.com/a/1505693/1069232

也请看这里: https://bugzilla.mozilla.org/show_bug.cgi?id=274795

试着给下拉菜单起个名字。

在表单属性中包含 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>

这是我的解决办法:

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 设置) ,它对我很有用。将 getElementById 替换为页面上所有选择的循环,作为练习留给读者;)。

对我来说,以上的解决方案都不管用。如果没有设置,我必须明确地设置选择:

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

使用. 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' );

自动补全对我也不管用。

这是我用 jquery 编写的 javscript 修复程序:

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

要显示下拉列表的第一项,请使用 ProjectName.ClearSelection();

在你的设计页面中添加线条,以便在所有浏览器上工作,并且在页面加载时将这些代码放在后面。

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

有名字更好

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

Select 将采用选定的属性

在工作中,我只是修复了一个 bug,在同一个网页上,选择框选项在 Chrome 中显示正确,但在 Firefox 中没有。事实证明,它与上述问题完全不同,但可能是你正在经历的一个问题。

在 Chrome 中,选择框的字体颜色为黑色。由于某种原因,在 Firefox 中,选择框从容器继承了字体颜色,它是白色的。一旦我添加了一个 CSS 规则,以强制选择框字体颜色为黑色,值设置是正确显示。

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

在这种情况下,这对 Chrome 和 Firefox 都适用。

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

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

尝试禁用选择输入的 autocomplete属性... 有时浏览器会因此忽略 select

无论是 autocomplete="off"还是把它放在一个 form对我都不起作用。

成功了只是像下面这样使用选择的属性 没有“价值”:

<option @(Model.Source == TermSource.Instagram ? "selected" : "")>
Instagram
</option>
<option @(Model.Source == TermSource.Facebook ? "selected" : "")>
Facebook
</option>

所以它要么呈现 <option selected>...</option>,要么只呈现 <option>...</option>