jquery的两个输入值的总和

Eba*_*ory 20 javascript jquery input

我有代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我想要两个文本输入的和值,并写入一个id为"total"的文本输入

我的两个数字并不是例如:

service_price value = 2000并且modem_price=4000 在本实施例中总输入值必须是6000,但它是20004000

Sor*_*gal 26

因为至少有一个值是字符串,所以+运算符被解释为字符串连接运算符.对此最简单的解决方法是指示您希望将值解释为数字.

var total = +a + +b;
Run Code Online (Sandbox Code Playgroud)

$('#total_price').val(+a + +b);
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,只需将它们作为数字开始:

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

请参阅Mozilla的Unary +文档.

请注意,如果您知道该值将是一个数字,这只是一个好主意.如果这是用户输入,您必须更加小心,并且可能希望使用parseInt和其他答案建议的其他验证.


Tad*_*eck 25

您的代码是正确的,除了您添加(连接)字符串,而不是添加整数.只需将您的代码更改为:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该工作.

下面是一些工作示例,当复选框中的值复选时更新总和(如果选中此选项,则在更改其中一个字段时也会更新值):jsfiddle.


Rod*_*lfo 7

使用parseInt作为 a = parseInt($('input[name=service_price]').val())

  • 为了有效,请使用`parseInt($('input [name = service_price]').val(),10)`.你需要一个基数. (4认同)
  • @George Cummins:试试`parseInt("080")`. (2认同)

Vin*_*kal 5

使用parseInt

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


    $('#total_price').val(total);
Run Code Online (Sandbox Code Playgroud)