2012-11-29 17 views
6

a curajquery: percentuale di due numeri

Grazie per tutti coloro che hanno offerto il supporto ... la migliore sceneggiatura di lavoro voglio condividere con voi nella speranza che io possa aiutare gli altri che sta cercando la stessa soluzione:

$(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)); 
} 
}); 
}) 

Inoltre è possibile testare seguendo questo LINK


I NITIAL QUESTION:

Si prega di aiutare a calcolare la percentuale tra due numeri. Ho provato in un modo, ma non ci sono riuscito. Ti prego, dimmi che cosa è sbagliato, o Io apprezzo se si può consigliare altri script che mi potrebbe aiutare

mio script:

<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

perché '?' Nell'ultima riga del tag script? forse problema di Typo .. –

+0

Scusa, forse è sbagliato lì, sono nuovo in questo campo –

+0

Sono anche nuovo .. Penso che tu abbia copiato da altri siti, che genera ** 'hidden' ** caratteri speciali .. rimuovi '?' e forse funzionerà :) controlla anche la risposta di adil. –

risposta

8

uso val() invece di text() per l'elemento di input, utilizzare $(function(){}) per attendere che DOM sia pronto. E inoltre non utilizzare lo stesso ID agli elementi.

<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

grazie! mi aiuta davvero !!! –

+0

@Dhamu grazie! – mattn

1

Può essere che si desidera utilizzare parseFloat() invece di parseInt()

<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

Ciao grazie per il tuo tentativo di aiutarmi. Ho provato il dado ancora non ricevo in DIV dove è RATE alcun risultato –

3

Hai qualche problema,

  1. ? dopo aver chiuso la parentesi della funzione di testo.
  2. price1 ripetute id e price2 sia per div e caselle di testo
  3. Se volete input da testo allora si dovrebbe usare val() al posto del testo()

viene confermato il codice

Live Demo

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

thanks', ma ancora nessun risultato :( –

+0

Ci sono poche altre correzioni ... – Adil

+0

Ho risolto il tuo codice e ho aggiunto la demo dal vivo – Adil

1

Usa come questo,

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

div class cambiato, e ottenere il valore di ingresso da val()

Problemi correlati