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


112

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

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

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


私は今この問題に直面し、それを使用してそれを修正します$('option:selected').each(function(){ $(this).prop('selected',true); });
plonknimbuzz '15 / 07/15

これは名前属性のない要素を選択した場合にのみ発生することに気づきました
Tlacaelel Ramon Luis

3
autocomplete = "off"を試してください
hemanjosko

回答:


5

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

各フォーム要素をdefaultValueページ上の読み込みに設定してみることができます。


1
フォーム内のすべての要素に対してこれを行うのは簡単でしたか?
モンキーレンチ

@monkeyはjQueryを使用しているため、$(":input").val(this[0].defaultValue);(テストされていない)のようになります。通常のJSでは、それぞれを歩くdocument.getElementsByTagname("select")
Pekka

理想的なソリューションではないかもしれませんが、これは機能します。getAttribute( "selected")をチェックする必要があります
モンキーレンチ

8
FYI-Marco Demaioによる以下のはるかに良い答えがあります
jonlink 2014

281

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

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


7
これは私の好みです(Marcoとモンキーレンチのおかげで、そこで私の髪の毛の束をいくつか節約できました)。また、「value」または「checked」属性を持つすべての<input>、およびコンテンツを持つすべての<textarea>に追加する必要があります。
Swanny

22
これは間違いなく正しい答えです。魅力のように機能します。
Andrew Senner 2013年

1
これは有効なw3cではありません
Jose De Gouveia

1
Windows、Firefox ver 44.0(2016年1月)でも同じ問題が発生しました。そして、このソリューションはまだ機能します。
スティーブン

1
Firefox 47.0のチャームのように動作します。
Blackecho 2016年

72

Firefoxで、フォームに名前属性があるフォーム内に選択を配置しない限り、「選択された」属性は機能しないことに気づきました。


3
バム!これでautocomplete = "off"が修正されなかった箇所が修正されました。
little_birdie 2015年

Firefox 78.0.2で1時間かけて頭を悩ませました。フォームに名前は必要ありませんでしたが、名前を付けると安心しました。
betakilo

11

同じ問題が発生しただけで、この愚かなFirefoxの動作に10時間以上かかっていると思います。7つのドロップダウンがあります。それぞれがイベントをトリガーし、24の非表示の入力を埋めるため、正しいオプションが選択されていることを想像できます。 24個の間違った入力値!!! 私が最後に見つけた解決策は、次のコード行を追加するJavaScriptでフォームをリセットすることです。

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

PS:入力はデータベースから引き出された値を持っているので、フォームをリセットしても値は空になりませんが、Firefoxに選択済み=選択済みオプションに戻るように指示します!


これが正解です。W3によると、「オートコンプリート」は選択フィールドの有効な属性ではなく、「この時点では要素の選択で属性のオートコンプリートは許可されない」ため、選択要素で「オートコンプリート」を使用するという回答は誤りです。検証時のエラー。
スコット


5

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


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


3

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

.prop('selected', true);または.prop('selected', false);(jQuery)を使用して有効化/無効化は、FirefoxとChromeの両方で機能します。
JimB 2016年

2

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


2

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>

2

名前がより良い= >>

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

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


1

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


1

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

これは、私が使用するjqueryで記述されたJAVAスクリプト修正です。

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

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

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

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

.attr()代わりに使用していた.prop()


1

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

すべてのブラウザーで機能するようにデザインページに行を配置し、ページの読み込み時にコードの背後に配置します。

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

0

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


これは本当ですが、私の問題を解決していないようです。更新を行ったときに、Firefoxがフォームの変更を復元してもonchangeイベントが発生しないため、回避策はまだ必要です。
モンキーレンチ

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


0

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

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

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


0

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

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


0

どちらにもしないautocomplete="off"か、form作品の中に入れてください。

どのような仕事をすることだけで、選択した属性を使用したノー「値」で、このように:

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

だからレンダリングするか<option selected>...</option>、単に<option>...</option>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.