web-dev-qa-db-ja.com

Firefoxはオプションselected = "selected"を無視します

ドロップダウンを変更してページを更新すると、Firefoxは選択した属性を無視するようです。

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

実際、以前に選択したオプションが(更新前に)選択されます。他のことを変更するドロップダウンでトリガーされるイベントがあるため、これは最終的に私にとって問題になります。 firefoxにこの動作を停止させる方法はありますか(ページの読み込み時に別のイベントを発生させる以外に)?

101
monkey-wrench

知る限り、この動作はFirefoxにハードコードされています。

ページの読み込み時に、各フォーム要素をそのdefaultValueに設定してみてください。

3
Pekka 웃

追加 autocomplete="off"すべての選択タグのHTML属性。 (ソース: https://stackoverflow.com/a/8258154/26008

これにより、FireFoxのODDの動作が修正されます。

259
Marco Demaio

Firefoxでは、フォームが名前属性を持つフォーム内にselectを配置しない限り、「selected」属性が機能しないことに気付きました。

61
user1707970

ちょうど同じ問題があり、この愚かなFirefoxの動作に10時間以上苦労していたと信じて、私は7つのドロップダウンを持っています、それぞれがイベントをトリガーし、24の隠された入力を埋めます24の間違った入力値!!!私が最後に見つけた解決策は、次のコード行を追加するJavascriptでフォームをリセットすることです:

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

PS:入力はデータベースから取得した値を持っているので、フォームをリセットしても値が空になることはありませんが、ある意味では、Firefoxにselected = selectedオプションに戻ります。

9

更新時に以前の選択を記憶しているのはFirefoxだけです。代わりにハードリフレッシュを試してください。

また、ここで同じ問題: https://stackoverflow.com/a/1505693/1069232

こちらもご覧ください: https://bugzilla.mozilla.org/show_bug.cgi?id=274795

6
hammygoonan

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がそれを修正することを願っています!

3
Michael

.attr()の代わりに.prop()を使用します

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' );
3
Zaheer Babar

名前の方が良い= >>

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

選択は、選択された属性を取ります

2
snk

ページを更新する前に、フォームで.reset()を呼び出すことができます。

2
Neil
_<option selected="selected" value="Test">Test</option>
_

この場合、これはChromeとFirefoxの両方で機能しました。

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

私は.attr()の代わりに.prop()を使用していました

1
AndreL

_autocomplete="off"またはform内に配置することでうまくいきます。

workedは、選択した属性のみを使用することでした「値」なし

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

そのため、<option selected>...</option>、 あるいは単に <option>...</option>

1
uggeh

オートコンプリートも機能していませんでした。

これは私が使用するjqueryで書かれたjavscriptの修正です:

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

フォーム属性で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>
1
Muhammad Tahir

選択入力のautocomplete属性を無効にしてみてください。ブラウザはselectを無視することがあります

1
Arash Hatami

Mozillaのバグかもしれませんが、ドロップダウンに名前を付けてみてください。

1
FourtyTwo

ドロップダウンの最初のアイテムを表示するには、ProjectName.ClearSelection();を使用します

すべてのブラウザで動作するようにデザインページに行を配置し、ページの読み込み時にコードビハインドにもこれを配置します。

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

職場で、選択ボックスオプションが同じWebページのChromeで正しく表示されていたがFirefoxでは表示されていなかったバグを修正しました。ただし、発生している問題である可能性があります。

Chromeでは、選択ボックスのフォント色は黒でした。 Firefoxの何らかの理由で、選択ボックスはコンテナからfont-colorを継承しました。これは白でした。選択ボックスのフォント色を強制的に黒にするCSSルールを追加すると、値セットが適切に表示されました。

0
Stefan Musarra

これは私の解決策です:

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をページ上のすべての選択に対するループに置き換えて、読者のための演習として残します;)。

0
Benubird

選択を変更してページを更新すると、Firefoxがフォームの変更を復元するため、選択が機能していないように感じます。更新する代わりに、新しいタブでリンクを開いてみてください。

0
Rodrigo

私にとって、上記の解決策はどれもうまくいきませんでした。何も設定されていない場合、選択を明示的に設定する必要がありました。

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

私はFirefoxがこれを修正することを望みます:(

0
boxed