jQuery添加2输入文本的值,然后将其与总和相加

时间:2012-12-06 13:21:55

标签: jquery

哦,上帝,我不知道该怎么办,请帮助我......

我有这个HTML代码

<div id="project_math">
<form method="post">
 Quantity : <input type="text" name="quatity" value="1" />
 Amount : <input type="text" name="amounty" value="20" />
 <span id="total">20</span>
</form>
</div>

的jQuery

$(document).ready(function(){

    /* COMPUTATION */
    $('input[name=quantity_e]').keyup(function(){

        var sum = $('input[name=amt_e]').val();

        sum *= $('input[name=quantity_e]').val();
        $("#total").text($(this).val());

    });
});

我想要做的是当我keyup和输入值如2或10时,它会将它的值乘以金额值,所以如果我keyup 2那么金额值是20总数应该是40。

我的jQuery错了吗?

8 个答案:

答案 0 :(得分:6)

val返回一个字符串。所以你必须把它转换成一个数字。您可以使用parseInt

var sum = parseInt($('input[name=amt_e]').val(), 10);
sum *= parseInt($('input[name=quantity_e]').val(), 10);
$("#total").text(sum);

您在javascript中使用的名称与html中的名称不同。但这可能只是你的榜样。

答案 1 :(得分:2)

请尝试parseInt

    var sum = parseInt($('input[name=amt_e]').val());
    sum *= parseInt($('input[name=quantity_e]').val());

如果值不是整数,它当然会失败。

答案 2 :(得分:2)

嗯,您的选择器错误,val返回一个字符串,您应该先将字符串转换为数字。

$('input[name=quatity]').keyup(function(){
    var sum = parseInt(this.value, 10)
    sum *= parseInt($('input[name=amounty]').val(), 10);
    $("#total").text(sum);
});

答案 3 :(得分:1)

使用它:

/* COMPUTATION */
$('input[name=quatity]').keyup(function(){

    var sum = parseInt($('input[name=amounty]').val());

    sum += parseInt($('input[name=quatity]').val());
    $("#total").text(sum);

});​

在小提琴上试试这个:

http://jsfiddle.net/XwjKN/

答案 4 :(得分:1)

val()返回字符串,因此使用 parseInt 10基数转换为int值,默认值为8

var total= parseInt($('input[name=amt_e]').val(), 10);
total*= parseInt($('input[name=quantity_e]').val(), 10);
$("#total").text(total);

答案 5 :(得分:0)

如果任何文本框为空,则上面的解决方案会给出NaN。请试试这个它会给0.

var v1 = 0;     var v2 = 0;

if(!isNaN(parseInt($('input[name=amounty]').val()))){ v1 = parseInt($('input[name=amounty]').val()); }
if(!isNaN(parseInt($('input[name=quatity]').val()))){ v2 = parseInt($('input[name=quatity]').val()); }


sum = v1 * v2;

答案 6 :(得分:0)

您可以尝试以下方法:

var item1 = parseInt($('input[name=amounty]').val(), 10);
var item2 = parseInt($('input[name=quantity]').val(), 10);
if(item1 !== NaN && item2 !== NaN) {  //This is a check to make sure the values are numbers
    var product = item1 * item2;
    $('#total').text(product);
    $('input[name=total]).val(product);    //This will put the value in the hidden input field
}

此解决方案不会尝试计算值是否都不是数字。

希望这有帮助。

答案 7 :(得分:0)

INPUT字段名称中的大量更正:

  1. 数量是您可能希望的实际输入字段名称,但在HTML和Jquery中都没有正确使用。

  2. 跨度显示总值不会使用您正在计算的SUM进行更新,而是始终使用数量值进行更新。

  3. 找到更正后的HTML:

    <div id="project_math">
    <form method="post">
     Quantity : <input type="text" name="quantity" value="1" />
     Amount : <input type="text" name="amounty" value="20" />
     <span id="total">20</span>
    </form>
    </div>​
    

    jQuery的:

    $(document).ready(function(){
    
        /* COMPUTATION */
        $('input[name=quantity]').keyup(function(){
    
            console.log('fired');
            var sum = $('input[name=amounty]').val();
    
            sum *= $('input[name=quantity]').val();
            $("#total").text(sum );
    
        });
    });​
    
相关问题