Vérifier si l'option est sélectionnée avec jQuery, sinon sélectionnez une valeur par défaut

StackOverflow https://stackoverflow.com/questions/149573

Question

À l’aide de jQuery, comment vérifier si une option est sélectionnée dans un menu de sélection, et si ce n’est pas le cas, attribuez-en une aux options sélectionnées.

(La sélection est générée avec un labyrinthe de fonctions PHP dans une application dont je viens d'hériter. Il s'agit donc d'une solution rapide pour bien comprendre ces points:)

Était-ce utile?

La solution

Bien que je ne sois pas sûr de ce que vous voulez accomplir, ce 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>

Autres conseils

Inutile d'utiliser jQuery pour cela:

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

Cette question est ancienne et suscite de nombreux points de vue, je vais donc vous présenter des éléments qui aideront certaines personnes, j'en suis sûr.

Pour vérifier si un élément sélectionné contient des éléments sélectionnés:

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

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

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

ou si vous êtes dans une boucle et que vous souhaitez vérifier si l'élément actuel est sélectionné:

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

pour vérifier si un élément n'est pas sélectionné en boucle:

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

Voici certaines des manières de le faire. jQuery dispose de nombreuses méthodes différentes pour réaliser la même chose. Vous ne devez donc choisir que celle qui semble être la plus efficace.

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

Si vous travaillez beaucoup avec des listes de sélection sur le client, consultez ce plugin: http://www.texotela.co.uk/code/jquery/select/ . Jetez un coup d’œil à la source si vous voulez voir plus d’exemples d’utilisation de listes de sélection.

Voici ma fonction qui change l'option sélectionnée. Cela fonctionne pour 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');   
}
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>

Facile! La valeur par défaut devrait être la première option. Terminé! Cela vous mènerait à un code JavaScript discret, car ce dernier n'est pas nécessaire:)

JavaScript non intrusif

J'ai déjà rencontré le plugin texotela mentionné, qui m'a permis de résolvez-le comme ceci:

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});

Regardez l'élément selectedIndex de l'élément select . . BTW, c'est une chose simple plaine de DOM, pas spécifique à JQuery.

C’est un script rapide qui a fonctionné ... .Result est affecté à une étiquette.

$(".Result").html($("option:selected").text());

Vous en faites beaucoup trop pour la sélection. Il suffit de sélectionner par valeur:

$("#mySelect").val( 3 );
if (!$("#select").find("option:selected").length){
  //
}

J'ai trouvé un bon moyen de vérifier si l'option est sélectionnée et de sélectionner une valeur par défaut lorsqu'elle ne l'est pas.

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

Si #some_select n'a pas l'option sélectionnée par défaut, .val () est indéfini

.
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
$("#select_box_id").children()[1].selected

C’est un autre moyen de vérifier si une option est sélectionnée ou non dans jquery. Ceci retournera un booléen (vrai ou faux).

[1] est l'index de l'option de la boîte de sélection

Modifiez l’événement de la zone de sélection pour qu’il se déclenche, puis extrayez simplement l’attribut id de l’option sélectionnée: -

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

Je cherchais simplement quelque chose de similaire et j'ai trouvé ceci:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

Ceci trouve tous les menus sélectionnés de la classe pour lesquels aucune option n'a déjà été sélectionnée et sélectionne l'option par défaut ("2" dans ce cas).

J'ai essayé d'utiliser : sélectionné au lieu de [sélectionné] , mais cela n'a pas fonctionné car quelque chose est toujours sélectionné, même si rien ne porte l'attribut

Si vous devez vérifier explicitement chaque option pour savoir si l'une des options est sélectionnée " sélectionnée " attribuer vous pouvez le faire. Sinon, en utilisant option: sélectionné , vous obtiendrez la valeur de la première option par défaut.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top