我正在用jQuery構建一個實時價格報價表單,使用一系列選擇菜單。我想出了下面的代碼,它抓住每個選擇菜單的默認值並將它們相加:jquery:每次選擇一個新選項時從多個選擇菜單中獲取值
$(document).ready(function(){
$('select > option:selected').each(function() {
var value = $(this).attr('label');
total = parseFloat(total) + parseFloat(value);
total = total.toFixed(2);
});
printTotal(total); // prints the total price
});
唯一的問題是,這隻能在頁面加載時。我希望每次在任何選擇菜單中選擇一個新值時都會更新價格(有6個)。
我嘗試添加$(「選擇」)。改變(函數(){...}與觸發器(如example code here所示),但加起來的所有值的每個選擇菜單(即總的6倍它應該是什麼)
我搜索的文檔,但無法計算要使用的事件誰能幫
HTML樣品是否有幫助:?
<select id="colors">
<option label="25.00" value="XYZ">1 color</option>
<option label="50.50" value="ABC">2 colors</option>
<option label="75.75" value="MNO">3 colors</option>
</select>
感謝您的迴應馬特。這並沒有完全實現,因爲每次進行新的選擇時總數都被重置爲所選選項的值。如果我在變更函數之外移動「var total = 0」,那麼每個新選擇都會繼續添加到總數上,而不是替換上次選擇。我希望這是有道理的... 我還必須保持我的添加相同,打破2行,否則「總」保持行爲像一個字符串。 – 2009-10-15 01:34:05
我的'var total = 0;'的位置如果我沒有弄錯,似乎與您評論中的更新代碼位於相同的位置。至於爲什麼你將你的添加分成兩行,這是有道理的,因爲toFixed()返回一個字符串,這意味着每次循環中total的值將是一個字符串。很高興我能幫助你引導你正確的方向! :) – 2009-10-15 04:37:41