我需要一些帮助。
我希望“总计”由“数量*价格=总计”计算(到目前为止还可以)。问题是我还需要“数量”来计算“总计/价格=数量”,即如果一个字段被更改,另一个字段将自动更改。
我制作了一个非常简单的示例代码:JSFiddle
//Value of Price (Hidden)
$('#price').val(31245);
//Calculation
var qty=$("#qty");
qty.keyup(function(){
var total=isNaN(parseInt(qty.val()* $("#price").val())) ? 0 :(qty.val()* $("#price").val())
$("#total").val(total);
});
var total=$("#total");
total.keyup(function(){
var qty=isNaN(parseInt(total.val()/ $("#price").val())) ? 0 :(total.val()/ $("#price").val())
$("#qty").val(qty);
});
//Mask Total input
var originalVal = $.fn.val;
$.fn.val = function(value) {
if (typeof value == 'undefined') {
return originalVal.call(this);
} else {
setTimeout(function() {
this.trigger('mask.maskMoney');
}.bind(this), 100);
return originalVal.call(this, value);
}
};
$('#total').maskMoney();
$('#total').on('click mousedown mouseup focus blur keydown change input', function(event) {
console.log('This Happened:'+ event.type);
});
其中第一部分“quantity * price = total”正常运行并自动更新。但是,如果在第二部分“总计/价格=数量”,则会出现问题。
当在总输入中输入的数字太大时(例如:9,876.23),数量不会自动计算并返回0.但如果数字是例如893.23,则数量可以正常工作。
你能帮助我吗? (抱歉我的英语不好)Ps:我需要数量字段的值不超过8位小数(例如:0.00000000)。但是在我尝试的所有尝试中都没有用。
答案 0 :(得分:0)
计算中无法理解掩码自动生成的千位分隔符,因此您应首先从输入中删除它
var qty=isNaN(parseInt(total.val().replace(",", "")/ $("#price").val())) ? 0 :(total.val().replace(",", "")/ $("#price").val())
但是,如果出现超过一千个分隔符(1,000,000),则会出现此问题,因此您可以全局删除所有数千个分隔符:
var my_total = total.val().replace(/,/, "");
答案 1 :(得分:0)