2009-10-09 74 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); 
     }) 

它应该提醒的像“草土灌木”的jQuery选择多个问题

而是我得到的空白所选的选项的。

+0

通过“渐空”要做到这一点更简单的方法,你的意思是警告对话框是空白的还是代码根本没有运行?因为你的代码似乎运行良好:http://jsbin.com/atiba(http://jsbin.com/atiba/edit)。你确定你把JavaScript放在正确的地方吗? – brianpeiris 2009-10-10 01:52:28

回答

1

这将工作:

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

无需这样做对每个选项,只是把相关的选项选择的孩子,和文本()将串联所有的比赛。

1

没有与$('select').val()

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

结果用逗号隔开,因此最初的警报会显示Shrubs,Bushes

+0

其实'$('select')。val()'的结果是一个数组。 alert()只是调用'toString()'方法,用逗号连接结果。所以你可以做'alert($('select')。val()。join(''))'来复制提问者的代码。 – brianpeiris 2009-10-10 01:48:17

+0

啊啊感谢您的澄清:) – Mottie 2009-10-10 02:04:34