web-dev-qa-db-fra.com

Firefox ignore l'option selected = "selected"

Si vous modifiez un menu déroulant et actualisez la page, Firefox semble ignorer l'attribut sélectionné.

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

Il sélectionnera en fait l'option que vous aviez précédemment sélectionnée (avant l'actualisation). Cela finit par être un problème pour moi car il y a un événement déclenché dans la liste déroulante qui change d'autres choses. Existe-t-il un moyen de faire en sorte que Firefox arrête ce comportement (autre que le déclenchement d'un autre événement lors du chargement de la page)?

94
monkey-wrench

Autant que je sache, ce comportement est codé en dur dans Firefox.

Vous pouvez essayer de définir chaque élément de formulaire sur sa defaultValue au chargement de la page. 

4
Pekka 웃

Ajoutez l'attribut HTML autocomplete="off" à chaque balise de sélection. (source: https://stackoverflow.com/a/8258154/260080 )

Cela corrige le comportement ODD dans FireFox.

242
Marco Demaio

Dans Firefox, j'ai remarqué que l'attribut "sélectionné" ne fonctionnera pas si vous ne placez pas la sélection dans un formulaire, où le formulaire a un attribut name.

59
user1707970

Juste le même problème, croyez-moi, cela fait plus de 10 heures que je suis confronté à ce comportement stupide de firefox, j'ai 7 listes déroulantes, chacune d'entre elles va déclencher un événement et renseigner 24 entrées masquées, vous pouvez donc vous imaginer avoir l'option choisie 24 valeurs d'entrée erronées !!! la solution que j'ai finalement trouvée est de réinitialiser le formulaire avec Javascript en ajoutant cette ligne de code:

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

PS: les entrées ont les valeurs extraites d'une base de données, la réinitialisation du formulaire ne vide donc aucune valeur, mais indique en quelque sorte à firefox de revenir en arrière à l'option selected = selected!

8

C'est juste Firefox qui se souvient de votre sélection précédente lors de l'actualisation. Essayez plutôt un rafraîchissement physique.

Aussi, même problème ici: https://stackoverflow.com/a/1505693/1069232

Voir aussi ici: https://bugzilla.mozilla.org/show_bug.cgi?id=274795

6
hammygoonan

J'utilise FF 25.0.1

Il ignore selected="" et selected="selected".

Mais si j'essaie simplement selected, l'option est sélectionnée.

Comportement étrange (non conforme). Je sais que selected est valide au format HTML5 et qu’il s’agit du formulaire le plus court, mais j’écris généralement du code qui valide également un XML bien formé, afin de pouvoir utiliser n’importe quel outil de validation XML pour vérifier mes résultats de manière très stricte (et l’échange de données est très facile. ..)

Selon le W3C, ces variantes devraient être valides sur les attributs booléens:

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

Je préfère la première, car elle est presque aussi courte que la dernière variante (non conforme à xml) mais doit être validée en tant que XHTML5 et HTML5. Donc j'espère que Mozilla va le réparer!

3
Michael

Avec le nom c'est mieux = >> 

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

La sélection prendra l'attribut sélectionné

2
snk

Vous pouvez appeler .reset() sur le formulaire avant d'actualiser la page.

2
Neil

utiliser .prop () au lieu de .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>

Dans ce cas, cela a fonctionné à la fois pour Chrome et Firefox.

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

J'utilisais .attr() au lieu de .prop()

1
AndreL

autocomplete ne fonctionnait pas pour moi non plus.

C'est le correctif javascript écrit en jQuery que j'ai utilisé:

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

entourez select in form attrib et cela fonctionnera.

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

et

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

C'est peut-être un bug dans mozilla mais essayez de donner un nom à la liste déroulante.

1
FourtyTwo

Pour afficher le premier élément de la liste déroulante, utilisez ProjectName.ClearSelection();

Mettez des lignes dans votre page de conception pour fonctionner sur tous les navigateurs Et mettez également ceci sur le code derrière le chargement de page.

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

Ni autocomplete="off" ni le placer dans une form ne fonctionne pour moi.

Qu'est-ce que travaillé n'utilisait que l'attribut sélectionné sans "valeur" comme ceci:

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

soit il restitue <option selected>...</option>, soit juste <option>...</option>

0
uggeh

Au travail, je viens de corriger un bogue dans lequel l'option de la case à cocher s'affichait correctement dans Chrome, mais pas dans Firefox, sur la même page Web. Cela s'est avéré être quelque chose de complètement différent des problèmes ci-dessus, mais pourrait être un problème que vous rencontrez.

Dans Chrome, la zone de sélection de la police de caractères était en noir. Pour une raison quelconque dans Firefox, la zone de sélection a hérité de la couleur de police du conteneur, qui était blanc. Une fois que j'ai ajouté une règle CSS pour forcer le noir à afficher la police de caractères de la boîte de sélection, la valeur définie était correctement affichée.

0
Stefan Musarra

essayez de désactiver autocompleteattribute of select input ... parfois le navigateur ignore select à cause de cela

0
Arash Hatami

Ceci est ma solution:

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

Je viens de mettre cela en haut de la page (avec l'ensemble d'identifiant approprié), et cela fonctionne pour moi. En remplaçant le getElementById par une boucle sur toutes les sélections de la page, je pars comme exercice pour le lecteur;).

0
Benubird

Si vous modifiez la sélection et actualisez la page, firefox restaurera vos modifications sur le formulaire, vous aurez l'impression que la sélection ne fonctionne pas. Au lieu d'actualiser, essayez d'ouvrir le lien dans un nouvel onglet.

0
Rodrigo

Pour moi, aucune des solutions ci-dessus n'a fonctionné. Je devais définir explicitement la sélection si aucune n'était définie:

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

Je souhaite que firefox répare ceci :(

0
boxed