J'ai du code:
function compute() {
if ($('input[name=type]:checked').val() != undefined) {
var a = $('input[name=service_price]').val();
var b = $('input[name=modem_price]').val();
var total = a + b;
$('#total_price').val(a + b);
}
}
Dans mon code, je veux additionner les valeurs de deux entrées de texte et écrire dans une entrée de texte qui a un identifiant de "total"
Mes deux nombres ne se résument pas par exemple:
service_price value = 2000
et modem_price=4000
dans cet exemple, la valeur d'entrée totale doit être de 6000 mais elle est de 20004000
Votre code est correct, sauf que vous ajoutez (concaténez) des chaînes, et non des entiers. Changez simplement votre code en:
function compute() {
if ( $('input[name=type]:checked').val() != undefined ) {
var a = parseInt($('input[name=service_price]').val());
var b = parseInt($('input[name=modem_price]').val());
var total = a+b;
$('#total_price').val(a+b);
}
}
et cela devrait fonctionner.
Voici un exemple de travail qui met à jour la somme lorsque la valeur lorsque la case est cochée (et si elle est cochée, la valeur est également mise à jour lorsque l'un des champs est modifié): jsfiddle .
Étant donné qu'au moins une valeur est une chaîne, l'opérateur + est interprété comme un opérateur de concaténation de chaînes. La solution la plus simple consiste à indiquer que vous souhaitez que les valeurs soient interprétées comme des nombres.
var total = +a + +b;
et
$('#total_price').val(+a + +b);
Ou, mieux, il suffit de les retirer sous forme de nombres pour commencer:
var a = +$('input[name=service_price]').val();
var b = +$('input[name=modem_price]').val();
var total = a+b;
$('#total_price').val(a+b);
Voir la documentation de Mozilla nary + .
Notez que ce n'est une bonne idée que si vous savez que la valeur sera de toute façon un nombre. S'il s'agit d'une entrée utilisateur, vous devez être plus prudent et vouloir probablement utiliser parseInt
et d'autres validations comme le suggèrent d'autres réponses.
utilisez parseInt comme a = parseInt($('input[name=service_price]').val())
utilisez parseInt
var total = parseInt(a) + parseInt(b);
$('#total_price').val(total);
<script>
$(document).ready(function(){
var a =parseInt($("#a").val());
var b =parseInt($("#b").val());
$("#submit").on("click",function(){
var sum = a + b;
alert(sum);
});
});
</script>
Les convertir en un nombre
$('#total_price').val(Number(a)+Number(b));
Mais avant de faire ça
if (!isNaN($('input[name=service_price]').val()) {...