2012-11-29 12 views
6

EDITEDjquery: Anzahl von zwei Zahlen

Vielen Dank für alle, die Unterstützung angeboten ... das beste Arbeits Skript, das ich mit Ihnen in der Hoffnung teilen, dass ich anderen helfen könnte, die für die gleiche Lösung sucht:

$(document).ready(function(){ 
$("#price1, #price2").keyup(function() { 
    var priceOne = parseFloat($("#price1").val()); 
    var priceTwo = parseFloat($("#price2").val()); 
    var rate = parseFloat($("#rate").val()); 
    if ($("#price1").val() && $("#price2").val()){  
    $('#rate').val(((priceTwo - priceOne)/priceOne * 100).toFixed(2)); 
} 

}); 

$("#rate").keyup(function() { 
    var priceOne = parseFloat($("#price1").val()); 
    var rate = parseFloat($("#rate").val()); 

    if ($("#rate").val() && $("#price1").val() && $("#price2").val()){ 
$('#price2').val(((priceOne * rate)/ 100 + priceOne).toFixed(2)); 
} 
}); 
}) 

auch können Sie es testen, im Anschluss an diese LINK


I NITIALE FRAGE:

Bitte helfen Sie, den Prozentsatz zwischen zwei Zahlen zu berechnen. Ich habe es versucht, aber es ist mir nicht gelungen. Bitte sagen Sie mir, was falsch ist, oder ich zu schätzen wissen, wenn Sie andere Skript empfehlen kann, die mir helfen könnte

mein Skript:

<html> 
<head> 
<script type="text/javascript"> 
$("#rate").text(function() { 
    var result = (parseInt(($("#price1").text(), 10) * 100)/ parseInt($("#price2").text(), 10)); 
    if (!isFinite(result)) result = 0; 
    return result; 
});? 
</script> 

</head> 
<body> 
<div id="price1"><label><input id="price1" type="text"></label></div> 
<div id="price2"><label><input id="price2" type="text"></label></div> 
<div id="rate"><label><input id="rate" type="text"></label></div> 


</body> 
</html> 
+0

warum '?' In letzte Zeile von Script-Tag? vielleicht Problem der Typo .. –

+0

Sorry, vielleicht ist es falsch, ich bin neu in diesem Bereich –

+0

Ich bin auch neu .. Ich denke, Sie haben von anderen Seiten kopiert, die ** 'versteckte' ** Sonderzeichen generiert .. entferne '?' und vielleicht wird es funktionieren :) überprüfe auch adils Antwort. –

Antwort

8

Verwendung val() statt text() für Eingangselement erhalten, Verwenden Sie $(function(){}), um zu warten, DOM ist bereit. Und verwende nicht dieselbe ID zu Elementen.

<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $("#price1, #price2").change(function() { // input on change 
    var result = parseFloat(parseInt($("#price1").val(), 10) * 100)/ parseInt($("#price2").val(), 10); 
    $('#rate').val(result||''); //shows value in "#rate" 
    }) 
}); 
</script> 
</head> 
<body> 
<div id="price-div1"><label>price1</label><input id="price1" type="text"></div> 
<div id="price-div2"><label>price2</label><input id="price2" type="text"></div> 
<div id="rate-div"><label>rate</label><input id="rate" type="text">%</div> 
</body> 
</html> 
+0

danke! es hilft mir wirklich !!! –

+0

@Dhamu danke! – mattn

1

Mai werden Sie parseFloat() statt ParseInt verwenden möchten()

<div id="price-div1"></label>price1<label><input id="price1" type="text"></div> 
    <div id="price-div2"></label>price2<label><input id="price2" type="text"></div> 
    <div id="rate-div"><label>rate</label><input id="rate" type="text">%</div> 

    <script type="text/javascript"> 
     $(function() { 
      $("#price1, #price2").change(function() { 
       var result = parseFloat(parseFloat($("#price1").val(), 10) * 100)/ parseFloat($("#price2").val(), 10); 
       $('#rate').val(result||''); 
      }) 
     }); 
    </script> 
+0

Hallo vielen Dank für Ihren Versuch, mir zu helfen. Ich habe versucht, Mutter immer noch nicht erhalten in DIV, wo ist RATE irgendein Ergebnis –

3

Sie haben einige Probleme,

  1. ? nach dem Schließen der Klammer der Textfunktion.
  2. Wiederholte id price1 und price2 für beide div und Textfelder
  3. Wenn Sie eine Eingabe von Textfeld, dann sollten Sie val() anstelle von Text()

Fest Sie Code

Live Demo verwenden

HTML

<div id="dprice1"><label><input id="price1" type="text" value="80" /></label></div> 
<div id="dprice2"><label><input id="price2" type="text" value="100" /></label></div> 
<div id="drate"><label><input id="rate" type="text"></label></div> 
<input id="btnCal" type="button" value="Calculate"> 

Javascript

$("#btnCal").click(function() { 
    $("#rate").val(function() { 
     var result = parseInt($("#price1").val()) * 100/parseInt($("#price2").val()); 
     if (!isFinite(result)) result = 0; 
     return result; 
    }); 
});​ 
+0

danke, aber immer noch kein Ergebnis :( –

+0

Es gibt einige weitere Korrekturen ... – Adil

+0

Ich habe Ihren Code behoben und Live-Demo hinzugefügt. – Adil

1

Verwendung wie diese,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<script type="text/javascript"> 
$("#rate").text(function() { 
    var result = (parseFloat(($("#price1").val(), 10) * 100)/ parseFloat($("#price2").val(), 10)); 
    if (!isFinite(result)) result = 0; 
    return result; 
}); 
</script> 
<body> 
<div class="price1"><label><input id="price1" type="text"></label></div> 
<div class="price2"><label><input id="price2" type="text"></label></div> 
<div class="rate"><label><input id="rate" type="text"></label></div> 
</body> 
</html> 

Changed div class und Eingabewert von val()

2

prüfen diese Geige

http://jsfiddle.net/j3WY3/5/

Haben einige Korrekturen vorgenommen:

  • entfernt ? wie jeder sagt.
  • Änderung .text()-.val()
  • beide div und input hatte gleiche ID