2

天哪,我不知道该怎么办,请帮助我......

我有这个 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 这样的值时,它会将它的值乘以金额值,所以如果我keyup2 那么金额值是 20,那么总数应该是 40。

我的 jQuery 错了吗?

4

8 回答 8

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 中的名称不同。但这可能只是你的例子。

于 2012-12-06T13:23:54.260 回答
2

试试看parseInt

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

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

于 2012-12-06T13:24:35.447 回答
2

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

$('input[name=quatity]').keyup(function(){
    var sum = parseInt(this.value, 10)
    sum *= parseInt($('input[name=amounty]').val(), 10);
    $("#total").text(sum);
});
于 2012-12-06T13:27:30.590 回答
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/

于 2012-12-06T13:29:06.797 回答
1

val()返回字符串,因此使用带有 10 radix的parseInt转换为 int 值,默认为 8

var total= parseInt($('input[name=amt_e]').val(), 10);
total*= parseInt($('input[name=quantity_e]').val(), 10);
$("#total").text(total);
于 2012-12-06T13:32:15.040 回答
0

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

变量 v1=0; 变量 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;
于 2012-12-06T13:41:10.803 回答
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
}

如果值不是两个数字,此解决方案将不会尝试计算。

希望这可以帮助。

于 2012-12-06T13:42:22.343 回答
0

输入字段名称中的大量更正:

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

  2. 显示总值的跨度不会随您计算的 SUM 更新,而是始终随数量值更新。

找到更正后的 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 );

    });
});​
于 2012-12-06T13:47:26.760 回答