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

20
demandé sur Mark Schultheiss 2011-07-02 00:32:52

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.

25
répondu Tadeck 2011-07-01 20:45:17

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.

26
répondu Sorpigal 2011-07-01 20:47:29

Utilisez parseInt comme a = parseInt($('input[name=service_price]').val())

7
répondu Rodolfo 2011-07-01 20:34:07

utiliser parseInt

   var total = parseInt(a) + parseInt(b);


    $('#total_price').val(total);
5
répondu Vineesh Kalarickal 2013-09-06 07:43:05

<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>
2
répondu Apurba Ranjan 2015-11-12 06:49:14

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()) {...
1
répondu Michael 2011-07-01 20:38:11

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);
});
-1
répondu pradip kor 2017-05-31 13:27:35