jquery:每次选择新选项时,从多个选择菜单中获取值
我正在使用jQuery构建一个实时报价表单,使用一系列选择菜单。我想出了下面的代码,它从每个选择菜单中获取默认值并将它们添加到一起:jquery:每次选择新选项时,从多个选择菜单中获取值,jquery,select,onchange,Jquery,Select,Onchange,我正在使用jQuery构建一个实时报价表单,使用一系列选择菜单。我想出了下面的代码,它从每个选择菜单中获取默认值并将它们添加到一起: $(document).ready(function(){ $('select > option:selected').each(function() { var value = $(this).attr('label'); total = parseFloat(total) + parseFloat(value); total = tota
$(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个
我尝试添加带有触发器的$select.changefunction{…},如中所示,但这会将每个选择菜单的所有值相加,即总数是其应有值的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>
在change调用中进行测试时,需要确保在单击的select元素的上下文中搜索选项
$('select').change(function() {
var total = 0;
// note the second parameter passed to the $() function below
$('option:selected', $(this)).each(function() {
var value = $(this).attr('label');
total += parseFloat(value).toFixed(2);
});
printTotal(total);
});
在change调用中进行测试时,需要确保在单击的select元素的上下文中搜索选项
$('select').change(function() {
var total = 0;
// note the second parameter passed to the $() function below
$('option:selected', $(this)).each(function() {
var value = $(this).attr('label');
total += parseFloat(value).toFixed(2);
});
printTotal(total);
});
马特,我想你在我脑海里触发了什么,因为我发现了——至少,到目前为止,它是有效的 下面是执行此操作的代码:
$(document).ready(function(){
$('select').change(function() {
var total = 0;
$('select > option:selected').each(function() {
var value = $(this).attr('label');
total = parseFloat(total) + parseFloat(value);
total = total.toFixed(2);
});
printTotal(total);
});
});
归结起来就是var total=0块的位置,每次进行新的选择时都必须重置它。马特,我想你在我脑海中触发了一些东西,因为我发现了——至少到目前为止,它是有效的 下面是执行此操作的代码:
$(document).ready(function(){
$('select').change(function() {
var total = 0;
$('select > option:selected').each(function() {
var value = $(this).attr('label');
total = parseFloat(total) + parseFloat(value);
total = total.toFixed(2);
});
printTotal(total);
});
});
这取决于var total=0工件的位置,每次进行新选择时都必须重置该零件。感谢您的回复。这还不够,因为每次进行新选择时,总数都会重置为所选选项的值。如果我将var total=0移到change函数之外,则每个新选择都会不断添加到总数中,而不是替换上一个选择。我希望这是有道理的。。。我还必须保持加法不变,分成两行,因为否则total的作用就像一个字符串如果我没弄错的话,它似乎与您评论中更新的代码位于同一位置。至于为什么要将加法分成两行,这是有道理的,因为toFixed返回一个字符串,这意味着每次循环中total的值都是一个字符串。很高兴我能帮你指引正确的方向谢谢你的回复,马特。这还不够,因为每次进行新选择时,总数都会重置为所选选项的值。如果我将var total=0移到change函数之外,则每个新选择都会不断添加到总数中,而不是替换上一个选择。我希望这是有道理的。。。我还必须保持加法不变,分成两行,因为否则total的作用就像一个字符串如果我没弄错的话,它似乎与您评论中更新的代码位于同一位置。至于为什么要将加法分成两行,这是有道理的,因为toFixed返回一个字符串,这意味着每次循环中total的值都是一个字符串。很高兴我能帮你指引正确的方向