web-dev-qa-db-fra.com

Somme de deux valeurs d'entrée par jquery

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

20
Ebad ghafoory

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 .

25
Tadeck

É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.

26
Sorpigal

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

7
Rodolfo

utilisez parseInt

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


    $('#total_price').val(total);
5
Vineesh Kalarickal
<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
Apurba Ranjan

Les convertir en un nombre

$('#total_price').val(Number(a)+Number(b));

Mais avant de faire ça

if (!isNaN($('input[name=service_price]').val()) {...
1
Michael