我们正在使用以下字段进行一些计算。
$(document).ready(function(){
$('.num').blur(function () {
var amount = parseInt($('#amount').val()) || 0;
var openbal = parseInt($('#openbal').val());
var disc = parseInt($('#disc').val());
var netpay = fees+openbal-disc || 0;
$('#netpay').val(netpay);
});
});
这是html代码
<select name="product" class="product">
<option selected>Select product</option>
<option>Product1</option>
<option>Product2</option>
</select>
<input type="text" size="30" name="amount" class="num" id="amount" />
<input type="text" class="num" name="openbal" value="0" id="openbal" />
<input type="text" class="num" name="disc" value="0" id="disc" />
<input type="text" name="netpay" id="netpay" />
所以我们在这里做的是......
.num(class)
进行计算,例如给定折扣或任何待定余额。我们的代码工作正常,但它只在我们在任何.num字段上模糊时更新netpay(#netpay)并更新计算。但是我们想在金额收到它之后进行计算,如果我们更新任何num(.num)字段,甚至应该更新netpay(#netpay),例如我们给予折扣(#disc)500,所以netpay(#netpay)应该更新。
感谢您的支持。
答案 0 :(得分:1)
设置blur
的值后,最简单的方法是提升#amount
事件。
因此,在Ajax调用的success
处理程序中,执行以下操作:
$('#amount').val('newValue').blur();
由于blur
事件处理程序也绑定到#amount
,因此引发事件将执行它(但您可以使用处理程序绑定的任何其他元素)。
不幸的是,使用.val()
设置文本输入元素的值会不引发change
事件。
进一步评论:
如果您使用parseInt
,请确保将右基数作为第二个参数传递。所以它应该是parseInt($('#amount').val(), 10)
。否则,如果有人输入带前导0的数字,则该值将被解析为八进制值。如果值是没有任何后缀的普通数字,您还可以通过前缀+
将字符串解析为数字:
var amount = +$('#amount').val() || 0,
openbal = +$('#openbal').val() || 0,
disc = +$('#disc').val() || 0,
netpay = fees + openbal - disc;
$('#netpay').val(netpay);
答案 1 :(得分:0)
你的意思是它在你输入数字输入时不会更新吗?
考虑将计算功能分开并从不同的事件中调用它。
function doCalc() {
var fees = 0; // <-- is undefined in your example
var amount = parseInt($('#amount').val()) || 0;
var openbal = parseInt($('#openbal').val());
var disc = parseInt($('#disc').val());
var netpay = fees + openbal - disc || 0;
$('#netpay').val(netpay); // <-- the result is not going anywhere
}
$(function(){
$('.num')
.blur(doCalc) // keeping your original event
.keydown(doCalc) // also updating as they type
.change(doCalc) // also update if value changes
;
});
我没有测试过这个。我猜这是不是你想要的。
答案 2 :(得分:0)
尝试使用它:
$('#amount').blur(function ()
而不是:
$('.num').blur(function ()