Javascript 基于输入和单击单选按钮的实时计算
我想创建一个基于交易的实时净利润计算器,在给定的买卖价格和给定的数量,它有两个单选按钮作为输入 现在的情况是,我必须在输入值并选择按钮后按enter键 我想要的是,只要我输入值并选择单选按钮,它就会计算值 请帮助我更正代码Javascript 基于输入和单击单选按钮的实时计算,javascript,jquery,html,Javascript,Jquery,Html,我想创建一个基于交易的实时净利润计算器,在给定的买卖价格和给定的数量,它有两个单选按钮作为输入 现在的情况是,我必须在输入值并选择按钮后按enter键 我想要的是,只要我输入值并选择单选按钮,它就会计算值 请帮助我更正代码 <!DOCTYPE html> <html> <meta charset="utf-8"> <title>Brokerage Calculator</title> <head> <scrip
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>Brokerage Calculator</title>
<head>
<script src="jquery-min.js"></script>
</head>
<body>
Buy Price
<input type="number" min="0" id="bp"><br />
Sell Price
<input type="number" min="0" id="sp"><br />
Qty:
<input type="number" min="0" id="qty"><br />
NSE:
<input name="exchname" id="nse" value="0.0000325" type="radio" checked="checked"><br />
BSE:
<input name="exchname" id="bse" value="0.0000275" type="radio"><br />
Turnover:
<span id="turnover">0</span><br />
Brokerage:
<span id="brokerage">0</span><br />
Security Transction Tax:
<span id="stt">0</span><br />
Total Tran Charges:
<span id="ttc">0</span><br />
SEBI Charges:
<span id="sebi">0</span><br />
Service Tax:
<span id="servtax">0</span><br />
Stamp Duty:
<span id="std">0</span><br />
Total Brokerage + Taxes:
<span id="ttx">0</span><br />
Net Profit:
<span id="pnl">0</span><br />
<script>
$('input').keyup(function(){ // run anytime the value changes
var buyPrice = parseFloat($('#bp').val()); // get value of field
var sellPrice = parseFloat($('#sp').val()); // convert it to a float
var quantity = parseFloat($('#qty').val());
var turnoverValue = (buyPrice + sellPrice) * quantity;
var sttValue = sellPrice * quantity * 0.025 / 100;
var sebiValue = turnoverValue * 0.0002 / 100;
var stdValue = 0.00002 * turnoverValue;
var excrate = document.querySelector('input[name="exchname"]:checked').value;
if(buyPrice<166.67){
var brkgbp = 0.05;
} else {
var brkgbp = buyPrice * 0.03 / 100;
}
if(sellPrice<166.67){
var brkgsp = 0.05;
} else {
var brkgsp = sellPrice * 0.03 / 100;
}
var brokerageValue = (brkgbp + brkgsp) * quantity;
var ttcValue = excrate * turnoverValue;
var servtaxValue = (brokerageValue + ttcValue + sebiValue) * 15 / 100;
var ttxValue = brokerageValue + sttValue + ttcValue + sebiValue + servtaxValue + stdValue;
var pnlValue = ((sellPrice - buyPrice) * quantity) - ttxValue;
$('#turnover').html(turnoverValue.toFixed(2));
$('#brokerage').html(brokerageValue.toFixed(2));
$('#stt').html(sttValue.toFixed(2));
$('#sebi').html(sebiValue.toFixed(2));
$('#servtax').html(servtaxValue.toFixed(2));
$('#ttc').html(ttcValue.toFixed(2));
$('#std').html(stdValue.toFixed(2));
$('#ttx').html(ttxValue.toFixed(2));
$('#pnl').html(pnlValue.toFixed(2));
});
<script>
</body>
</html>
经纪计算器
买入价
售价
数量:
NSE:
疯牛病:
人事变更率:
0
经纪业务:
0
证券交易税:
0
总运输费用:
0
SEBI费用:
0
服务税:
0
印花税:
0
总经纪费+税费:
0
净利润:
0
$('input').keyup(函数(){//在值更改时运行
var buyPrice=parseFloat($('#bp').val());//获取字段的值
var sellPrice=parseFloat($('#sp').val());//将其转换为浮点
var quantity=parseFloat($('#qty').val());
var转换值=(买入价+卖出价)*数量;
var sttValue=售价*数量*0.025/100;
var sebiValue=转换值*0.0002/100;
var stdValue=0.00002*转换值;
var excrate=document.querySelector('input[name=“exchname”]:checked')。值;
如果(buyPrice您没有忘记关闭脚本标签吗
<script> ... </script>
使用默认值初始化,这样就不会得到NaN
如果要在重新选择单选按钮中的选项时更改值,请使用:
function calculate(){ // run anytime the value changes
....
}
$('input').on('keyup', calculate);
$('input').on('click', calculate);
编辑:我做了一个JSFIDLE
您不是忘记关闭脚本标记了吗
<script> ... </script>
使用默认值初始化,这样就不会得到NaN
如果要在重新选择单选按钮中的选项时更改值,请使用:
function calculate(){ // run anytime the value changes
....
}
$('input').on('keyup', calculate);
$('input').on('click', calculate);
编辑:我做了一个JSFIDLE
代码中存在多个问题
1。脚本标记末尾缺少/
。它应该是
,而不是
2。您需要确保输入的值仅为有效数字,然后才能继续,您可以使用javascript中的isNaN
函数验证
if(!isNaN(买入价)&&!isNaN(卖出价)&&&!isNaN(数量)){
3.
此外,对于复选框,您需要添加另一个选择器。这样您就可以创建一个公共函数并调用它
$("input").keyup(calculate);
$("input:checked").keyup(calculate);
完整代码:
$(“输入”).keyup(计算);
$(“输入:选中”).keyup(计算);
函数calculate(){//在值更改时运行
var buyPrice=parseFloat($('#bp').val());//获取字段的值
var sellPrice=parseFloat($('#sp').val());//将其转换为浮点
var quantity=parseFloat($('#qty').val());
如果(!isNaN(买入价)&&!isNaN(卖出价)&&!isNaN(数量)){
var转换值=(买入价+卖出价)*数量;
var sttValue=售价*数量*0.025/100;
var sebiValue=转换值*0.0002/100;
var stdValue=0.00002*转换值;
var excrate=document.querySelector('input[name=“exchname”]:checked')。值;
如果(buyPrice代码中存在多个问题
1。脚本标记末尾缺少/
。它应该是
,而不是
2。您需要确保输入的值仅为有效数字,然后才能继续,您可以使用javascript中的isNaN
函数验证
if(!isNaN(买入价)&&!isNaN(卖出价)&&&!isNaN(数量)){
3.
此外,对于复选框,您需要添加另一个选择器。这样您就可以创建一个公共函数并调用它
$("input").keyup(calculate);
$("input:checked").keyup(calculate);
完整代码:
$(“输入”).keyup(计算);
$(“输入:选中”).keyup(计算);
函数calculate(){//在值更改时运行
var buyPrice=parseFloat($('#bp').val());//获取字段的值
var sellPrice=parseFloat($('#sp').val());//将其转换为浮点
var quantity=parseFloat($('#qty').val());
如果(!isNaN(买入价)&&!isNaN(卖出价)&&!isNaN(数量)){
var转换值=(买入价+卖出价)*数量;
var sttValue=售价*数量*0.025/100;
var sebiValue=转换值*0.0002/100;
var stdValue=0.00002*转换值;
var excrate=document.querySelector('input[name=“exchname”]:checked')。值;
如果(buyPrice您的结束脚本标记缺少/
,即
对于您的输入,您正在检查是否释放了键盘键,该键在单击单选按钮时不会触发。由于您正在检查输入的值是否已更改,因此应将$('input')。keyup
更改为$('input')。更改
编辑:当然,您也应该进行NaN检查,正如其他答案所示-但是您描述的问题可以通过使用更改事件来解决。您的结束脚本标记缺少/
,即
对于您的输入,您正在检查是否释放了键盘键,该键在单击单选按钮时不会触发。由于您正在检查输入的值是否已更改,因此应将$('input')。keyup
更改为$('input')。更改
编辑:当然,您也应该进行NaN检查,正如其他答案所示-但是您描述的问题可以通过使用更改
事件来解决。感谢帮助:)我已将所有三个答案组合在一起,并按我的需要运行。谢谢大家,谢谢帮助:)我已经组合了所有三个答案,这是我需要的。谢谢你们,谢谢你们的帮助:)我已经组合了所有三个答案,这是我需要的。谢谢你们,谢谢你们的帮助:)我已经组合了所有三个答案