我有这个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错了吗?
答案 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);
});
在小提琴上试试这个:
答案 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字段名称中的大量更正:
数量是您可能希望的实际输入字段名称,但在HTML和Jquery中都没有正确使用。
跨度显示总值不会使用您正在计算的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 );
});
});