gpt4 book ai didi

javascript - 根据下拉选项更改结果输入 - jQuery + HTML

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:34:29 24 4
gpt4 key购买 nike

我正在尝试使用 HTML 和 jQuery 构建一个计算器。到目前为止,我有:

HTML

<form accept-charset="UTF-8" action="#" id="calc" method="post">
<div class="item-1">
<label for="item-1">Item 1</label>
<input class="income" id="item-1" size="50" />
<select id="select-item-1" class="select">
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>
</div>
<div class="item-2">
<label for="item-2">Item 2</label>
<input class="income" id="item-2" size="50" />
<select id="select-item-2" class="select">
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>
</div>
<div class="item-3">
<label for="item-3">Item 3</label>
<input class="income" id="item-3" size="50" />
<select id="select-item-3" class="select">
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>
</div>
<hr />
<div class="grand-total">
<label for="grand-total">Total :</label>
<input id="grand-total" size="50" disabled />
<select id="grand-total-filter" class="select">
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>
</div>
</form>

脚本

var $form = $('#calc'),
$summands = $form.find('.income'),
$sumDisplay = $('#grand-total');

$form.delegate('.income', 'change', function (){
var sum = 0;
$summands.each(function () {
var value = Number($(this).val());
if (!isNaN(value)) sum += value;
});

$sumDisplay.val(sum);
});

$("#grand-total-filter").change(function() {
var e = document.getElementById("grand-total-filter");
var strUser = e.options[e.selectedIndex].value;
if (strUser == 'monthly' ) {
// Monthly
} else if (strUser == 'weekly' ) {
// Weekly
} else {
// Default (Daily)
}
});

这是一个带有以上位的工作 jsFiddle:http://jsfiddle.net/4Q8Gh/1/

想法是,最终用户应该能够添加值(item1、item2 和 item3)和任何选项(每日、每月、每周)—​​—单独地——所以 item1/item2/item3 可以有任何选项(每天、每周、每月)。

默认情况下,结果应以“每日”值显示,结果输入可以再次按任何选项过滤:每日、每周、每月。

例如我们有:

  1. item1 = 10(每日)
  2. item2 = 100(每周)
  3. item3 = 1000(每月)

这给了我们一个 TOTAL* 的:

  • 每日:10 + (100/5) + (1000/20) = 80
  • 每周:(10*5) + 100 + (1000/4) = 400
  • 每月:(10*20) + (100*4) + 1000 = 1600

*基于上面的例子并考虑 1 周 = 5 个工作日和 1 个月 = 4 周

此时我迷路了,我不确定如何使用 jQuery 将这些想法转化为代码,因此非常感谢任何帮助/指导。提前感谢您的任何反馈!

附言如果我的方法出于任何原因不正确,我将非常乐意听到您的建议。

最佳答案

制作 1 个执行完整计算的函数,然后将您的表单 INPUT 和 SELECT 更改事件委托(delegate)给它。

http://jsfiddle.net/RZpnz/

function calculate() {
var sum = 0;
$("#calc").find("input.income").each(function() {
var val = parseFloat($(this).val());
if(!isNaN(val)) {
var unit = $("#select-" + this.id).val();
switch(unit) {
case "daily": sum += val; break;
case "weekly": sum += val / 5; break;
case "monthly": sum += val / (5 * 4); break;
default: break;
}
}
});
var unit = $("#grand-total-filter").val();
switch(unit) {
case "daily": sum *= 1; break;
case "weekly": sum *= 5; break;
case "monthly": sum *= (5 * 4); break;
default: break;
}
$("#grand-total").val(sum);
}
$("#calc").delegate("input.income", "change", calculate);
$("#calc").delegate("select.select", "change", calculate);

关于javascript - 根据下拉选项更改结果输入 - jQuery + HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17660664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com