我正在尝试对我的表单进行实时计算,请查看表单...
<input type="text" value="0" name="product1" class="num"/>
<input type="text" value="0" name="product2" class="num" />
<input type="text" value="0" name="product3" class="num"/>
<input type="text" value="0" name="cost" class="cost"/>
和jquery代码......
$(function() {
var cost = 0;
$('.num').blur(function(){
cost+= parseFloat($(this).val());
});
$('.cost').val(cost);
});
但它不起作用,请帮助谢谢。
答案 0 :(得分:4)
您需要移动更新模糊事件处理程序中费用字段值的行:
<强>更新强> 通过使用这种修改值将导致总数不断添加的方法,逻辑也存在问题,我修改了代码来解决这个问题:
$(function() {
$('.num').live("blur", function(){
var parentLI = $(this).closest("LI");
var cost = 0;
$(".num", parentLI).each(function() {
var value = $(this).val();
if (!isNaN(value) && value != "")
cost+= parseFloat(value);
})
$('.cost').val(cost);
});
});
答案 1 :(得分:3)
只需将$('.cost').val(cost);
移动到模糊功能中,或者仅在加载页面时运行模糊功能时才会运行。
所以这应该有效:
$(function() {
var cost = 0;
$('.num').blur(function(){
cost+= parseFloat($(this).val());
$('.cost').val(cost);
});
});
答案 2 :(得分:1)
您可能希望为文档元素使用id而不是name,并使它们唯一。
您的代码应如下所示:
$(function() {
var cost = 0;
$('.num').blur(function(){
cost+= parseFloat($(this).value());
$('.cost').value(cost);
});
});
请注意如何更容易地看到缩进问题。成本字段值的变化并不恰当。
答案 3 :(得分:1)
将jQuery的代码更改为,$('.cost').val(cost);
从未被调用,因为它是在模糊事件函数之外写的...所以控件在函数中就不会去那里
$(function() {
var cost = 0;
$('.num').blur(function(){
//EDIT
$('.cost').val(parseFloat($('.cost').val())+parseFloat($(this).val()));
});
$('.cost').val(cost);
});
并且还在HTML文本框中使用value
属性而不是val
..
答案 4 :(得分:0)
您还可以使用更改(fn)而不是模糊,以避免在未更改值时进行不必要的计算。 .keyup(fn)允许您在用户输入时执行此操作。希望有所帮助!
答案 5 :(得分:0)
这是因为你使用'val'而不是'value'