2009-10-09 6 views
0
<select name="garden" multiple="multiple"> 
    <option>Flowers</option> 
    <option selected="selected">Shrubs</option> 

    <option>Trees</option> 
    <option selected="selected">Bushes</option> 
    <option>Grass</option> 
    <option>Dirt</option> 
    </select> 



$("select").change(function() { 
      var str = ""; 
      $("select option:selected").each(function() { 
       str += $(this).text() + " "; 
       }); 
      alert(str); 
     }) 

Son censé alerter l'option des options sélectionnées comme « herbe Dirt » Buissonsjquery sélection de problèmes multiples

Au lieu de cela je deviens vide.

+0

Par « se vide », voulez-vous dire que l'alerte boîte de dialogue est vide ou que le code ne fonctionne pas du tout? Parce que votre code semble fonctionner correctement: http://jsbin.com/atiba (http://jsbin.com/atiba/edit). Êtes-vous sûr de mettre votre JavaScript au bon endroit? – brianpeiris

Répondre

1

Cela fonctionne:

<script> 
$(function(){ 
    $("select").change(function() { 
      var str = $(this).children('option[selected]').text(); 
      alert(str); 
     }) 
}); 
</script> 

Pas besoin de le faire pour chaque option, il suffit de prendre les options pertinentes que les enfants de la sélection, et le texte() concaténera tout ce match.

1

Il est un moyen plus facile de le faire avec $('select').val()

<script type="text/javascript"> 
$(document).ready(function(){ 
alert ($("select").val()); 
$("select").change(function() { 
    var str = $("select").val(); 
    alert(str); 
}) 
}) 
</script> 

Les résultats sont séparés par des virgules, de sorte que l'alerte initiale montreront Shrubs,Bushes

+0

En fait, le résultat de '$ ('select'). Val()' est un tableau. 'alert()' appelle simplement la méthode 'toString()', qui joint les résultats avec une virgule. Vous pouvez donc faire 'alert ($ ('select'). Val(). Join (''))' pour dupliquer le code du questionneur. – brianpeiris

+0

Ahhh merci pour la clarification :) – Mottie