2017-02-10 5 views
0

Ich möchte einen Echtzeit-Rechner für Net-Profit basierend auf der Übertragung der gegebenen Menge zum gegebenen Kauf- und Verkaufspreis erstellen und es hat 2 Radiobuttons als Eingänge.RealTime Berechnungen basierend auf Eingaben und angeklickt Radiobuttons

Was passiert ist, ich muss Enter drücken, nachdem Sie Werte eingegeben und die Schaltfläche ausgewählt haben.

Wo was ich will ist, sobald ich Werte eingegeben und Radiobutton wählen, sollte es die Werte berechnen.

Pl helfen mir meinen Code zu korrigieren.

<!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> 

Antwort

1

Haben Sie nicht vergessen, das Skript-Tag zu schließen?

<script> ... </script> 

Verwenden Sie auch

var buyPrice = parseFloat($('#bp').val()) || 0; 

mit einem Standardwert initialisiert, so erhalten Sie NaN nicht

Wenn Sie die Werte ändern möchten, wenn Sie eine Option im Radio erneut auswählen Tasten verwenden:

function calculate(){ // run anytime the value changes 
    .... 
} 
$('input').on('keyup', calculate); 
$('input').on('click', calculate); 

EDIT: ich habe ein JSfiddle

https://jsfiddle.net/v3qd7b26/

+0

Danke für die Hilfe :) Ich habe alle drei Antworten kombiniert und es funktioniert wie ich brauche. Danke Jungs https://jsfiddle.net/neonirav/xetjhm6u/2/ – NeoNirav

1

Multiple Problem in Ihrem Code

1. Sie fehlt die / im Script-Tag am Ende. Es sollte </script> anstelle von <script> sein.

2. Sie müssen sicherstellen, dass die eingegebenen Werte gelten nur Zahlen und dann weiter nur gehen, können Sie überprüfen, ob isNaN Funktion in Javascript

if(!isNaN(buyPrice) && !isNaN(sellPrice) && !isNaN(quantity)){

3. mit Auch , für das Kontrollkästchen muss ein weiterer Selektor hinzugefügt werden. So können Sie eine gemeinsame Funktion erstellen und aufrufen.

$("input").keyup(calculate); 
$("input:checked").keyup(calculate); 

komplette Code:

$("input").keyup(calculate); 
 
$("input:checked").keyup(calculate); 
 

 
function calculate(){ // 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()); 
 
    if(!isNaN(buyPrice) && !isNaN(sellPrice) && !isNaN(quantity)){ 
 
    
 
    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 src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
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 />

+0

Danke für die Hilfe :) Ich habe alle drei Antworten kombiniert und es funktioniert als meine Notwendigkeit. Danke Jungs https://jsfiddle.net/neonirav/xetjhm6u/2/ – NeoNirav

1

Ihr Abschluss Skript Tag fehlt das /, dh </script>

Für Ihre Eingaben, die Sie für die Überprüfung Freigabe einer Tastaturtaste, die Zünden Sie nicht für das Klicken Radioknöpfe. Da Sie überprüfen, ob sich der Wert der Eingabe geändert hat, sollten Sie $('input').keyup in ändern.

edit: Natürlich sollten Sie auch die NaN-Prüfung durchführen, wie in den anderen Antworten angegeben - aber das Problem, das Sie beschrieben haben, wird gelöst, indem das Ereignis verwendet wird.

+0

Danke für die Hilfe :) Ich habe alle drei Antworten kombiniert und es funktioniert als meine Notwendigkeit. Danke Jungs https://jsfiddle.net/neonirav/xetjhm6u/2/ – NeoNirav

Verwandte Themen