Сумма двух входных значений по jquery - PullRequest
20 голосов
/ 02 июля 2011

У меня есть код:

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

В моем коде я хочу суммировать значения двух текстовых вводов и записывать в текстовый ввод с идентификатором «total»

Мои два числане суммируйте вместе, например:

service_price value = 2000 и modem_price=4000 в этом примере общее входное значение должно быть 6000, но это 20004000

Ответы [ 7 ]

26 голосов
/ 02 июля 2011

Поскольку хотя бы одно значение является строкой, оператор + интерпретируется как оператор конкатенации строк.Простейшее решение этой проблемы - указать, что вы намерены интерпретировать значения как числа.

var total = +a + +b;

и

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

Или, что лучше, просто вытяните их как числа, чтобыНачните с:

var a = +$('input[name=service_price]').val();
var b = +$('input[name=modem_price]').val();
var total = a+b;
$('#total_price').val(a+b);

См. документацию Mozilla Unary + .

Обратите внимание, что это хорошая идея, если вы знаете, что значение в любом случае будет числом,Если это пользовательский ввод, вы должны быть более осторожны и, вероятно, захотите использовать parseInt и другие проверки, как предлагают другие ответы.

25 голосов
/ 02 июля 2011

Ваш код правильный, за исключением того, что вы добавляете (объединяете) строки, а не добавляете целые числа. Просто измените свой код на:

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

и это должно работать.

Вот некоторый рабочий пример, который обновляет сумму, когда значение, когда установлен флажок (и если этот флажок установлен, значение также обновляется при изменении одного из полей): jsfiddle .

7 голосов
/ 02 июля 2011

использовать parseInt как a = parseInt($('input[name=service_price]').val())

5 голосов
/ 06 сентября 2013

использование parseInt

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


    $('#total_price').val(total);
2 голосов
/ 12 ноября 2015

<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>
1 голос
/ 02 июля 2011

Приведите их к числу

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

Но прежде чем вы это сделаете

if (!isNaN($('input[name=service_price]').val()) {...
0 голосов
/ 31 мая 2017

, если в нескольких классах вы хотите изменить дополнительную операцию в классе перикулярной связи, как показано в примере ниже

$('.like').click(function(){    
var like= $(this).text();
$(this).text(+like + +1);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...