Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于输入和单击单选按钮的实时计算_Javascript_Jquery_Html - Fatal编程技术网

Javascript 基于输入和单击单选按钮的实时计算

Javascript 基于输入和单击单选按钮的实时计算,javascript,jquery,html,Javascript,Jquery,Html,我想创建一个基于交易的实时净利润计算器,在给定的买卖价格和给定的数量,它有两个单选按钮作为输入 现在的情况是,我必须在输入值并选择按钮后按enter键 我想要的是,只要我输入值并选择单选按钮,它就会计算值 请帮助我更正代码 <!DOCTYPE html> <html> <meta charset="utf-8"> <title>Brokerage Calculator</title> <head> <scrip

我想创建一个基于交易的实时净利润计算器,在给定的买卖价格和给定的数量,它有两个单选按钮作为输入

现在的情况是,我必须在输入值并选择按钮后按enter键

我想要的是,只要我输入值并选择单选按钮,它就会计算值

请帮助我更正代码

<!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检查,正如其他答案所示-但是您描述的问题可以通过使用
更改
事件来解决。

感谢帮助:)我已将所有三个答案组合在一起,并按我的需要运行。谢谢大家,谢谢帮助:)我已经组合了所有三个答案,这是我需要的。谢谢你们,谢谢你们的帮助:)我已经组合了所有三个答案,这是我需要的。谢谢你们,谢谢你们的帮助:)我已经组合了所有三个答案