带有onInput和onChange指向同一函数的Javascript表单计算器。需要存储onChange吗 背景
我有一个表格,我正在建设,将作为一个价格计算器的功能。我把它弄得一团糟太久了,现在我被卡住了 基本上,当用户输入两个(实际上是三个)变量时,它将产生三个不同的输出 三个输入:带有onInput和onChange指向同一函数的Javascript表单计算器。需要存储onChange吗 背景,javascript,html,forms,input,Javascript,Html,Forms,Input,我有一个表格,我正在建设,将作为一个价格计算器的功能。我把它弄得一团糟太久了,现在我被卡住了 基本上,当用户输入两个(实际上是三个)变量时,它将产生三个不同的输出 三个输入: 售票 票价 谁付费用 三项产出: 他们付钱 你付钱 你得到报酬(净收入) 这个公式相当简单 (已售出门票)x(门票成本)=底价(如果您愿意,可以称之为总收入) (售出门票数量x$1)+(底价/100)=费用(基本上每张门票1美元+底价的1%) 根据“谁支付费用”变量,可以得到三个输出。要么他们付底价加手续费,要么他
- 售票
- 票价
- 谁付费用
- 他们付钱
- 你付钱
- 你得到报酬(净收入)
<div class="pricing-table">
<form id="pricingform" oninput="calculateTotal()">
<div class="price-row grid">
<div class="col-1-2">
Tickets Sold: <input type="text" name="ticketssold" id="ticketssold"> <i class="fas fa-times"></i>
</div>
<div class="col-1-2">
Ticket Price: <input type="text" name="ticketprice" id="ticketprice">
</div>
</div>
<div class="price-row">
<div class="col-full">
Fees:
<input type="radio" name="fees" value="PassOn" onchange="calculateTotal(this.value)" checked> <label>Pass Onto Attendee</label> <input type="radio" name="fees" value="CoverFees" onchange="calculateTotal(this.value)"> <label>Cover the Fees</label>
</div>
</div>
<div class="price-row grid">
<div class="col-1-3">
<label>Attendees Pay:</label><br /> <output id="attendees" name="attendees" for="a b">$0</span>
</div>
<div class="col-1-3">
<label>Estimated Cost:</label><br /> <output style="display:none;" type="hidden" id="percent" me="percent"></output><output id="cost" name="cost">$0</output>
</div>
<div class="col-1-3">
<label>Estimated Revenue:</label><br /> <output id="revenue" name="revenue">$0</output>
</div>
</div>
</form>
</div>
<script>
function getBasePrice() {
var baseprice = parseInt(ticketssold.value)*parseFloat(ticketprice.value);
return baseprice;
}
function getFees() {
var percent = parseFloat(ticketssold.value*ticketprice.value/100);
var dollar = parseInt(ticketssold.value);
var fees = +percent + +dollar;
return fees;
}
function calculateTotal(answer) {
var baseprice = getBasePrice();
var fees = getFees();
if (answer == "CoverFees") {
var attendeespay = +baseprice;
var venuepays = +fees;
var revenuetotal = +baseprice - +fees;
} else {
var attendeespay = +baseprice + +fees;
var venuepays = 0.00;
var revenuetotal = +baseprice;
}
revenue.value = "$"+revenuetotal.toFixed(2);
attendees.value = "$"+attendeespay.toFixed(2);
cost.value = "$"+venuepays.toFixed(2);
};
</script>
门票已售出:
票价:
费用:
传递给与会者支付费用
与会者付费:
0美元
估计成本:
0美元
预计收入:
0美元
函数getBasePrice(){
var baseprice=parseInt(ticketssell.value)*parseFloat(ticketprice.value);
返回基准价;
}
函数getFees(){
var percent=parseFloat(ticketsSeld.value*ticketprice.value/100);
var dollar=parseInt(ticketssell.value);
风险值费用=+百分比++美元;
退货费;
}
函数计算器总计(答案){
var baseprice=getBasePrice();
var费用=getFees();
如果(答案=“保险费”){
var attendeespay=+基准价格;
var venuepays=+费用;
var收入总额=+基准价格-+费用;
}否则{
var attendeespay=+基准价格++费用;
var venuepays=0.00;
var收益总额=+基准价格;
}
revenue.value=“$”+固定总收入(2);
Attendes.value=“$”+attendeespay.toFixed(2);
cost.value=“$”+venuepays.toFixed(2);
};
这是因为oninput在没有参数的情况下调用calculateTotal
<form id="pricingform" oninput="calculateTotal()">
门票已售出:
票价:
费用:
传递给与会者支付费用
与会者付费:
0美元
估计成本:
0美元
预计收入:
0美元
完美。我知道我在做一些不太正确的事情。非常感谢,这很有效!