210 votes

Vérifiez si l'option est sélectionnée avec jQuery, si ce n'sélectionnez une valeur par défaut

À l'aide de jQuery, comment voulez-vous vérifier s'il existe une option sélectionnée dans un menu de choix, et si non, d'attribuer l'une des options sélectionnées.

(Le select est généré avec un labyrinthe de fonctions PHP dans une application, j'ai juste hérité, donc c'est une solution rapide alors que je obtenir ma tête autour de ceux-ci :)

272voto

Joe Lencioni Points 4642

Alors que je ne suis pas sûr de savoir exactement ce que vous voulez accomplir, ce morceau de code a fonctionné pour moi.

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript">	
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
    $("#mySelect option[value='3']").attr('selected', 'selected');
});
</script>

30voto

FlySwat Points 61945

Pas besoin d'utiliser jQuery pour cela:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}

15voto

Gavin Points 795

Cette question est ancienne et a beaucoup de points de vue, donc je vais juste jeter un peu de choses là-bas qui va aider certaines personnes, j'en suis sûr.

Pour vérifier si un élément select a tout les éléments sélectionnés:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

ou pour vérifier si une sélection a rien sélectionné:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

ou si vous êtes dans une boucle de la sorte, et que vous souhaitez vérifier si l'élément courant est sélectionné:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

pour vérifier si un élément n'est pas sélectionné, alors que dans une boucle:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

Ce sont quelques façons de le faire. jQuery a de nombreuses façons différentes d'accomplir la même chose, donc il vous suffit de choisir celui qui semble être le plus efficace.

12voto

Alex Pendleton Points 156

lencioni de réponse est ce que je recommanderais. Vous pouvez changer le sélecteur pour l'option ('#mySelect option:last') pour sélectionner l'option avec une valeur spécifique à l'aide de "#mySelect option[value='yourDefaultValue']". Plus sur les sélecteurs.

Si vous travaillez beaucoup avec les listes de sélection sur le client découvrez ce plugin: http://www.texotela.co.uk/code/jquery/select/. Jetez un oeil à la source si vous voulez voir quelques exemples de plus de travailler avec des listes de sélection.

9voto

sata Points 91

Voici ma fonction de modification de l'option sélectionnée. Il fonctionne avec jQuery 1.3.2

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');	
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X