这是我的小提琴:https://jsfiddle.net/55L52yww/93/
示例1(整数)正常工作
示例2(浮动):
第二次添加和第8次〜
如果按下减号它会跳到0.15,即使该值为0.75,它也会跳到0.15 (这个我修好了,只是错过了一个parseFloat https://jsfiddle.net/55L52yww/94/)
如何修复示例2? 谢谢你的帮助
// The button to increment the product value
$(document).on('click', '.product_quantity_up', function(e){
e.preventDefault();
var arrayData = $(this).data('field-qty');
var arr = arrayData.split(';');
for (i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
fieldName = arr[0];
var currentVal = parseFloat($('input[name='+fieldName+']').val());
var minimalVal = parseFloat($('input[name='+fieldName+']').attr("data-minimal_quantity"));
if (!isNaN(currentVal) && currentVal < minimalVal) {
$('input[name='+fieldName+']').val(minimalVal);
$(this).parent().parent().find(".ajax_add_to_cart_button").attr("data-minimal_quantity",minimalVal);
}
else {
$('input[name='+fieldName+']').val(currentVal + parseFloat(arr[1])).trigger('keyup');
$(this).parent().parent().find(".ajax_add_to_cart_button").attr("data-minimal_quantity",currentVal + parseFloat(arr[1]));
}
$('#'+fieldName).change();
});
// The button to decrement the product value
$(document).on('click', '.product_quantity_down', function(e){
e.preventDefault();
var arrayData = $(this).data('field-qty');
var arr = arrayData.split(';');
for (i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
fieldName = arr[0];
var currentVal = parseInt($('input[name='+fieldName+']').val());
var minimalVal = parseFloat($('input[name='+fieldName+']').attr("data-minimal_quantity"));
if (!isNaN(currentVal) && currentVal > minimalVal){
$('input[name='+fieldName+']').val(currentVal - parseFloat(arr[1])).trigger('keyup');
$(this).parent().parent().find(".ajax_add_to_cart_button").attr("data-minimal_quantity",currentVal - parseFloat(arr[1]));
}
else {
$('input[name='+fieldName+']').val(minimalVal);
$(this).parent().parent().find(".ajax_add_to_cart_button").attr("data-minimal_quantity",minimalVal);
}
$('#'+fieldName).change();
});
答案 0 :(得分:4)
在第二个事件处理程序中,您仍然使用parseInt
来获取currentValue
:
var currentVal = parseInt($('input[name='+fieldName+']').val());
所以需要:
var currentVal = parseFloat($('input[name='+fieldName+']').val());