wake-up-neo.com

Firefox ignoriert die Option selected = "selected"

Wenn Sie ein Dropdown-Menü ändern und die Seite aktualisieren, scheint Firefox das ausgewählte Attribut zu ignorieren.

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

In der Tat wird die zuvor ausgewählte Option ausgewählt (vor der Aktualisierung). Dies stellt für mich ein Problem dar, da im Dropdown ein Ereignis ausgelöst wird, das andere Dinge ändert. Gibt es eine Möglichkeit, Firefox dazu zu bringen, dieses Verhalten zu stoppen (abgesehen vom Auslösen eines anderen Ereignisses, wenn die Seite geladen wird)?

94
monkey-wrench

AFAIK, dieses Verhalten ist in Firefox hartcodiert.

Sie können versuchen, jedes Formularelement beim Laden der Seite auf defaultValue zu setzen. 

4
Pekka 웃

Fügen Sie jedem select-Tag ein autocomplete="off"-HTML-Attribut hinzu. (Quelle: https://stackoverflow.com/a/8258154/260080 )

Dies behebt das Verhalten von ODD in FireFox.

242
Marco Demaio

In Firefox habe ich festgestellt, dass das "selected" -Attribut nicht funktioniert, es sei denn, Sie setzen die Auswahl in ein Formular, in dem das Formular ein Namensattribut hat.

59
user1707970

Ich hatte gerade das gleiche Problem, glaube mir, dass es mehr als 10 Stunden lang mit diesem dummen Firefox-Verhalten zu kämpfen hatte. Ich habe 7 Dropdown-Listen. Jeder von ihnen löst ein Ereignis aus und füllt 24 versteckte Eingänge aus, sodass Sie sich vorstellen können, die richtige Option ausgewählt zu haben 24 falsche Eingabewerte !!! Die Lösung, die ich schließlich gefunden habe, besteht darin, das Formular zurückzusetzen, indem Javascript diese Codezeile hinzufügt:

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

PS: Bei den Eingaben werden die Werte aus einer Datenbank abgerufen. Durch das Zurücksetzen des Formulars werden keine Werte geleert. Firefox wird jedoch in gewisser Weise dazu aufgefordert, die ausgewählte Option zu aktivieren.

8

Es ist nur Firefox, der sich beim Aktualisieren an Ihre vorherige Auswahl erinnert. Versuchen Sie stattdessen eine harte Aktualisierung.

Auch hier das gleiche Problem: https://stackoverflow.com/a/1505693/1069232

Siehe auch hier: https://bugzilla.mozilla.org/show_bug.cgi?id=274795

6
hammygoonan

Ich verwende FF 25.0.1

Es ignoriert selected="" und selected="selected".

Wenn ich jedoch einfach selected versuche, ist die Option ausgewählt.

Seltsames (nicht konformes) Verhalten. Ich weiß, dass selected gültiges HTML5 ist und die kürzeste Form ist, aber ich schreibe normalerweise Code, der auch als gut erstelltes XML validiert wird, sodass ich jedes XML-Validierungswerkzeug verwenden kann, um meine Ergebnisse auf sehr strenge Weise zu überprüfen (und der Datenaustausch ist sehr einfach. ..)

Nach W3C sollten diese Varianten für boolesche Attribute gelten:

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

Ich bevorzuge die erste Variante, da sie fast so kurz wie die letzte (nicht XML-konforme) Variante ist, aber sowohl als XHTML5 als auch als HTML5 validiert werden sollte. Ich hoffe, Mozilla wird das Problem beheben!

3
Michael

Mit dem Namen ist besser = >> 

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

Die Auswahl übernimmt das ausgewählte Attribut

2
snk

Sie können .reset() im Formular aufrufen, bevor Sie die Seite aktualisieren.

2
Neil

benutze .prop () anstelle von .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' );
2
Zaheer Babar
<option selected="selected" value="Test">Test</option>

In diesem Fall funktionierte dies sowohl für Chrome als auch für Firefox.

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

Ich habe .attr() anstelle von .prop() verwendet.

1
AndreL

autocomplete funktionierte auch nicht für mich.

Dies ist der in jquery geschriebene Javascript-Fix, den ich verwendet habe:

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

select select in das Formularattribut einschließen und es wird funktionieren.

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

und

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

Es ist vielleicht ein Fehler in Mozilla, aber geben Sie dem Dropdown einen Namen.

1
FourtyTwo

Verwenden Sie ProjectName.ClearSelection();, um das erste Element der Dropdown-Liste anzuzeigen.

Versehen Sie Ihre Design-Seite mit Zeilen, die für alle Browser geeignet sind.

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

Weder autocomplete="off" noch das Einfügen in eine form funktioniert für mich.

Was funktioniert war nur das ausgewählte Attribut ohne "Wert" zu verwenden so:

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

so dass es entweder <option selected>...</option> oder nur <option>...</option> rendert

0
uggeh

Bei der Arbeit habe ich nur einen Fehler behoben, bei dem die Auswahlfeld-Option in Chrome korrekt angezeigt wurde, aber nicht in Firefox auf derselben Webseite. Es stellte sich heraus, dass dies etwas völlig anderes als die oben genannten Probleme war, es könnte jedoch ein Problem sein, das Sie haben.

In Chrome war die Schriftfarbe der Auswahlbox schwarz. Aus irgendeinem Grund in Firefox hat das Auswahlfeld die Schriftfarbe von dem Container übernommen, der weiß war. Nachdem ich eine CSS-Regel hinzugefügt habe, um die Schriftfarbe der Auswahlbox schwarz zu setzen, wurde der Wertesatz ordnungsgemäß angezeigt.

0
Stefan Musarra

versuchen Sie, autocompleteattribute der Select-Eingabe zu deaktivieren ... manchmal ignoriert der Browser select

0
Arash Hatami

Das ist meine Lösung:

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;
}

Ich stelle das einfach oben auf der Seite (mit entsprechender ID-Einstellung) und es funktioniert für mich. Ersetze die getElementById durch eine Schleife über alle Selects auf der Seite, die ich als Übung für den Leser hinterlasse;).

0
Benubird

Wenn Sie die Auswahl ändern und die Seite aktualisieren, wird Firefox Ihre Änderungen am Formular wiederherstellen. Versuchen Sie, statt einer Aktualisierung den Link auf einer neuen Registerkarte zu öffnen.

0
Rodrigo

Für mich funktionierte keine der oben genannten Lösungen. Ich musste die Auswahl explizit setzen, wenn keine gesetzt wurde:

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

Ich wünschte, Firefox würde das beheben :(

0
boxed