如果更改下拉列表并刷新页面,Firefox似乎会忽略所选属性。
<option selected="selected" value="Test">Test</option>
实际上它会选择您之前选择的选项(在刷新之前)。这最终成为我的问题,因为在下拉列表上触发了一个事件,这会改变其他事情。有没有办法让firefox停止这种行为(除了在页面加载时触发另一个事件)?
答案 0 :(得分:253)
为每个选择标记添加autocomplete="off"
HTML属性。 (来源:https://stackoverflow.com/a/8258154/260080)
这修复了FireFox中的ODD行为。
答案 1 :(得分:59)
在firefox中,我注意到“selected”属性不起作用,除非你将select放在表单中,表单中有一个name属性。
答案 2 :(得分:8)
刚刚遇到同样的问题,相信我这个愚蠢的firefox行为已经超过10个小时了,我有7个下拉菜单,每个都会触发一个事件并填入24个隐藏的输入,所以你可以想象有正确的使用24个错误输入值选择的选项!!!我终于找到的解决方案是使用Javascript添加以下代码行重置表单:
window.onload = function() { document.forms['MarkerForm'].reset(); };
PS:输入具有从数据库中提取的值,因此重置表单不会清空任何值,但在某种程度上告诉firefox将地狱返回到selected = selected选项!
答案 3 :(得分:6)
只是Firefox在刷新时记住您之前的选择。尝试硬刷新。
答案 4 :(得分:4)
AFAIK,这种行为被硬编码到Firefox中。
您可以尝试在页面加载时将每个表单元素设置为defaultValue
。
答案 5 :(得分:3)
我正在使用FF 25.0.1
忽略selected=""
和selected="selected"
。
但如果我只是尝试selected
,则会选择该选项。
奇怪(不符合)的行为。我知道selected
是有效的HTML5,它是最短的形式,但我通常编写的代码也可以验证格式良好的XML,这样我就可以使用任何XML验证工具以非常严格的方式检查我的结果(和数据交换)非常容易......)
根据W3C,这些变体应该对布尔属性有效:
HTML5: boolAttr="" | boolAttr="boolAttr" | boolAttr
XHTML5: boolAttr="" | boolAttr="boolAttr"
我更喜欢第一个,因为它几乎与最后一个(不符合xml的)变体一样短,但应该同时验证为XHTML5和HTML5。所以我希望,Mozilla会修复它!
答案 6 :(得分:3)
使用.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' );
答案 7 :(得分:2)
您可以在刷新页面之前在表单上调用.reset()
。
答案 8 :(得分:2)
名称更好=&gt;&gt;
form id="UMForm" name="UMForm" class="form"
选择将采用所选属性
答案 9 :(得分:1)
将select in form属性括起来,它将起作用。
<!-- 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>
答案 10 :(得分:1)
autocomplete="off"
或form
中的<option @(Model.Source == TermSource.Instagram ? "selected" : "")>
Instagram
</option>
<option @(Model.Source == TermSource.Facebook ? "selected" : "")>
Facebook
</option>
都不适合我。
工作的目的是仅使用选择的属性,不使用&#34;值&#34; ,如下所示:
<option selected>...</option>
所以要么呈现<option>...</option>
,要么只呈现{{1}}
答案 11 :(得分:1)
<option selected="selected" value="Test">Test</option>
在这种情况下,这适用于Chrome和Firefox。
$('option[value="Test"]').prop('selected', true);
我使用.attr()
代替.prop()
答案 12 :(得分:1)
要显示下拉列表的第一项,请使用Contact
在您的设计页面中添加行以在所有浏览器上工作并在页面加载后将其放在代码后面。
ProjectName.ClearSelection();
答案 13 :(得分:1)
autocomplete对我来说也不起作用。
这是我用jquery编写的javscript修复:
$('input[type="radio"][selected]').click();
答案 14 :(得分:1)
这可能是mozilla中的一个错误,但请尝试给下拉名称。
答案 15 :(得分:0)
对我来说,上述解决方案都没有奏效。如果没有设置,我必须明确设置选择:
if (foo.find(':selected').length === 0) {
$(foo.find('option')[0]).attr('selected', 'selected');
}
我希望firefox能解决这个问题:(
答案 16 :(得分:0)
这是我的解决方案:
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,我作为练习留给读者;)。
答案 17 :(得分:0)
在工作中,我刚刚修复了一个错误,其中选择框选项在Chrome中正确显示,但在Firefox中没有显示在同一网页上。事实证明这与上述问题完全不同,但可能是您遇到的问题。
在Chrome中,选择框字体颜色为黑色。出于某种原因,在Firefox中,选择框继承了容器中的字体颜色,该颜色为白色。一旦我添加了CSS规则以强制选择框字体颜色为黑色,就会正确显示值集。
答案 18 :(得分:0)
如果更改选择并刷新页面,firefox将恢复表单上的更改,这就是您觉得选择不起作用的原因。请尝试在新标签页上打开链接,而不是刷新。