2011-11-29 173 views
0

我只是想知道爲什麼這個腳本不工作?我試圖在SELECT MULTIPLE中獲取所選(一個或多個項目)選項的值。什麼不見​​了?Jquery.change功能不觸發

感謝

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> 
<script> 

$('#ooo').change(function() { 
    var foo = []; 

    $('#ooo :selected').each(function(i, selected){   
     foo += $(selected).valueOf(); 
    }); 

    alert(foo); 
    //$("#test").text(str); 
}); 

</script> 
</head> 
<body> 
<select name="test" id="ooo" multiple="multiple"> 
    <option value="1">test</option> 
    <option value="2">bbbb</option> 
    <option value="3">aaaa</option> 
    <option value="4">xxx</option> 
    <option value="5">zzz</option> 
</select> 

回答

2

你需要用的代碼在$(document).ready()。在將更改處理程序綁定到元素之前,jQuery ready()處理程序將等待裝入文檔元素的單元。同時使用選擇多個它將返回一個選定項目的數組。因此,您需要在select元素的val()上運行.each()。

$(document).ready(function() { 
    $('#ooo').change(function() { 
     var foo = 0; 

     $.each($('#ooo').val(), function(i, selected) {   
     foo += parseInt(selected, 10); 
     }); 

     alert(foo); 
     //$("#test").text(str); 
    }); 
}); 
+0

好的,謝謝你的作品。現在如果我的價值是一個數字,我該如何添加這些數字?我試過'foo + = parseInt(選擇);'但它似乎只是回到我的第一個數字......爲什麼? – Joel

+0

首先不要忘記'parseInt(選中,10)'秒的基數是什麼意思「它似乎只是返回第一個數字?」只有一個號碼被選中? –

+0

是不是可選的?無論如何,即使以radix = 10作爲值,它仍然只讀取所選的第一個項目。在我的例子中,如果我選擇項目2和3,我的選擇總數應該是5.現在它給了我2任何想法? – Joel

0

請確保使用$(document).ready()作爲腳本出現在選擇框之前。還請確保指定腳本類型,<script type="javascript">,當類型未正確識別時,某些瀏覽器不喜歡它。

0

你可能只是這樣做 -

$(document).ready(function() { 
    $('#ooo').change(function() { 
     alert($('#ooo').val()); 
    }); 
}) 

jQuery的val功能將多個選擇框會自動選擇返回值元素的逗號分隔的字符串。您應該將$(document).ready函數添加到您的代碼中,以確保click事件可以成功綁定。

演示 - http://jsfiddle.net/pNUQm/