Avec jQuery, comment vérifier si une option est sélectionnée dans un menu de sélection et, dans le cas contraire, attribuer l’une des options sélectionnées.
(La sélection est générée avec un labyrinthe de PHP fonctions dans une application dont je viens d'hériter. Il s'agit donc d'une solution rapide pour bien comprendre ce qui se passe :)
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>
Pas besoin d'utiliser jQuery pour cela:
var foo = document.getElementById('yourSelect');
if (foo)
{
if (foo.selectedIndex != null)
{
foo.selectedIndex = 0;
}
}
Cette question est ancienne et a de nombreux points de vue, je vais donc simplement vous présenter des éléments qui aideront certaines personnes, j'en suis sûr.
Pour vérifier si un élément sélectionné a 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 voulez 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')) { .. }
});
Ce sont quelques-unes des façons de le faire. jQuery a de nombreuses façons différentes d’accomplir la même chose, vous devez donc choisir celle qui semble être la plus efficace.
réponse de lencioni 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 en utilisant "#mySelect option[value='yourDefaultValue']
". Plus 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 oeil à la source si vous voulez voir plus d'exemples d'utilisation de listes de sélection.
Voici ma fonction changer 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. Fait! Cela vous mènerait à un JavaScript discret, car JavaScript n'est pas nécessaire :)
Je suis déjà tombé sur le plugin texotela mentionné, ce qui me permet de le résoudre comme ceci:
$(document).ready(function(){
if ( $("#context").selectedValues() == false) {
$("#context").selectOptions("71");
}
});
Regardez le selectedIndex de l'élément select
. BTW, c'est une chose simple, pas du tout spécifique à JQuery.
J'ai trouvé que c'était un script rapide qui fonctionnait ... Le résultat est attribué à une étiquette.
$(".Result").html($("option:selected").text());
Vous faites beaucoup trop pour la sélection. Il suffit de sélectionner par valeur:
$("#mySelect").val( 3 );
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 quand ce n'est pas le cas.
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 choisi l'option par défaut, alors . Val () est non défini
if (!$("#select").find("option:selected").length){
//
}
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
Si vous avez besoin de vérifier explicitement chaque option pour voir si l'une d'entre elles possède l'attribut "sélectionné", vous pouvez le faire. Sinon, en utilisant option:selected
, 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;
}
});
Je cherchais simplement quelque chose de similaire et j'ai trouvé ceci:
$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);
Cela permet de rechercher tous les menus sélectionnés de la classe pour lesquels aucune option n'a déjà été sélectionnée et de sélectionner l'option par défaut ("2" dans ce cas).
J'ai essayé d'utiliser :selected
au lieu de [selected]
, mais cela n'a pas fonctionné car quelque chose est toujours sélectionné, même si rien n'a l'attribut.
Changer événement sur la zone de sélection pour déclencher et une fois que cela se produit, il suffit alors de tirer 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;
}
});
$("#select_box_id").children()[1].selected
C'est une autre façon de vérifier si une option est sélectionnée ou non dans jQuery. Cela retournera un booléen (vrai ou faux).
[1] est l'index de l'option case à cocher