Somme de deux valeurs d'entrée par jquery
j'ai le 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 des valeurs de somme de deux entrées de texte et écrire dans une entrée de texte qui a un id de "total"
Mes deux numéros de ne pas faire la somme ensemble, par exemple :
service_price value = 2000
et modem_price=4000
dans cet exemple, la valeur totale des entrées doit être de 6000 mais elle est de 20004000
7 réponses
votre code est correct, sauf que vous ajoutez (concaténez) des Chaînes, pas des entiers. Il suffit de changer 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 ça devrait marcher.
voici un exemple de travail qui met à jour la somme lorsque la valeur de la case à cocher est cochée (et si elle est cochée, la valeur est également mise à jour lorsque l'un des Champs est modifié): jsfiddle.
Parce que au moins une valeur est une chaîne, l'opérateur + est interprété comme un opérateur de concaténation de chaîne. La solution la plus simple pour cela est d'indiquer que vous avez l'intention pour que les valeurs soient interprétées comme des nombres.
var total = +a + +b;
et
$('#total_price').val(+a + +b);
Ou, mieux, juste à les tirer comme des chiffres 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 Mozilla Unaire + documentation.
Notez que c'est seulement une bonne idée si vous connaissez la valeur est ça va être un numéro de toute façon. Si c'est la saisie de l'utilisateur vous devez être plus prudent et probablement envie d'utiliser parseInt
et d'autres validations comme le suggèrent d'autres réponses.
Utilisez parseInt comme a = parseInt($('input[name=service_price]').val())
utiliser 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>
Distribution à un certain Nombre
$('#total_price').val(Number(a)+Number(b));
mais avant que vous ne le fassiez
if (!isNaN($('input[name=service_price]').val()) {...
si dans la classe multiple vous voulez changer l'opération supplémentaire dans la classe perticulaire qui montrent dans l'exemple ci-dessous
$('.like').click(function(){
var like= $(this).text();
$(this).text(+like + +1);
});