2012-07-05 70 views
1

我将如何开始,我想选择每个选中的“[]”中包含的值并将其添加到#theFinalPrice?JQuery从选定的下拉菜单中获取选定的值并将其添加到总数

<div ID="theFinalPrice">$20.00</div> 

<p>Hotel:<br /> 
<select name="variation1" class="eStore_variation"> 
<option value="King Bed [+ $50.00]">King Bed</option> 
<option value="Double Bed">Double Bed</option> 
</select></p> 

<p>Add a Guest:<br /> 
<select name="variation2" class="eStore_variation"> 
<option value="no added guests">no added guests</option> 
<option value="+1 guest [+ $35.00]">+1 guest [+ $35.00]</option> 
</select></p> 

<p>Additional Fun:<br /> 
<select name="variation3" class="eStore_variation"> 
<option value="no additional fun">no additional fun</option> 
<option value="1 game of golf [+ $35.00]">+1 game of golf [+ $35.00]</option> 
</select></p> 

回答

2

在你喜欢的任何变化,或单击处理程序,您可以使用jQuery的each获得,总结所有的值:

var total = 0; // Set to some base price 

$('.eStore_variation option:selected').each(function() { 
    var m = /\[\+ \$(\d+\.\d+)\]/.exec(this.value); 

    if(m !== null) { 
     total += +m[1]; 
    } 
}); 

var decimalPart = (total - Math.floor(total)) * 100; 

$('#theFinalPrice').text('$' + Math.floor(total) + '.' + (decimalPart < 10 ? '0' : '') + decimalPart); 

Here's a demo jsFiddle.

+0

WOW!谢谢!你不必为我写信:)我正在学习JS,而且越来越喜欢它。无论如何,当没有附加价格时,它会为价格输入一个“0”。无论如何要阻止这个? – user1040259 2012-07-05 19:43:39

+2

@ user1040259:只要将'var total = 0;'设置为任何基本价格。 ('20.00'?)另外...不客气! :) – Ryan 2012-07-05 19:44:49

+0

有道理。你是最好的:) – user1040259 2012-07-05 19:51:14