【发布时间】:2016-08-21 10:52:40
【问题描述】:
所以我想要这样的东西:
如您所见,有一个+ 和- 按钮,如果单击该按钮,它们会显示附加在No. of Units 处的相应值。
总而言之,我想要的是:
- 例如,如果我点击了四次
+,它将显示12+4(+4部分为绿色) - 如果我点击
-六次,它将显示12-2(-2部分为红色), - 如果我再单击
-十次,它将停在值12-12并提示/警报Do you really want to delete this load?(与最右侧的x按钮功能相同)。
您看到的问题是,添加增量值有效(如果我多次单击+),但如果我减少它,它只会停在0 并在0 和@987654340 之间交替@(使用的操作仍然是+,而不是-),而不是最大默认值(在上图中,是12)。
另外,如果我先点击一个减量按钮,它只会停在0,同样的情况下,它会在0 和1 之间交替。
这是为什么?抱歉,我无法提交此代码的前两次迭代,但两者都存在问题(第一次有效,但它附加了 -n 值,因此会出现 12--1,第二次会绕过 def值限制,它将达到12-14 等等)。我已经在这里不知所措了,所以我需要一些帮助。这是我下面的 jQuery 代码。
附言。我正在通过 jQuery DataTables 构建行,因此我无法显示添加行的代码,因为它不太相关。
PS(2)。这是上面的JSFiddle 实现。
PS(3)。如果您根据自己的喜好修改下面的代码,我们将不胜感激,因为它遵循上述三个用例。非常感谢。
jQuery
>// For increment and decrement no. of units
var def = $('#costcenter_data tr').find('td:nth-child(2)').html(); // default value or the "12" in the example
var out = def;
// Increment button
$('.btn.btn-xs.btn-primary.add-unit').click(function(e){
var count = $('#costcenter_data tr').find('td:nth-child(2)');
var value = parseInt(count.data('change_value'));
var clicked;
if (isNaN(value) && isNaN(prev)) {
value = 1;
count.data('clicked', "+")
} else {
value++;
}
var prev = count.data('clicked');
if (prev != "+") {
clicked = "-";
} else {
clicked = prev;
}
$('#costcenter_data tr').find('td:nth-child(2)').html(out+clicked+value);
count.data('change_value', value);
count.data('clicked', "+");
});
// Decrement button
$('.btn.btn-xs.btn-warning.remove-unit').click(function(e){
var count = $('#costcenter_data tr').find('td:nth-child(2)');
var value = parseInt(count.data('change_value'));
var clicked;
if (isNaN(value) && isNaN(prev)) {
value = 1;
count.data('clicked', "-")
} else if ((value-1) < 0) {
value--;
value = Math.abs(value);
if (value == parseInt(def)) {
alert("Delete prompt here");
return false;
}
} else {
value--;
clicked = count.data('clicked');
}
var prev = count.data('clicked');
if (prev != "-") {
clicked = "+";
} else {
clicked = prev;
}
$('#costcenter_data tr').find('td:nth-child(2)').html(out+clicked+value);
count.data('change_value', value);
});
【问题讨论】:
-
你为什么使用
Math.abs?在您将值减少到-1之前,Math.abs会将其变为正值1。我猜这个条件会在每次值为负数时调用,这就是为什么你的值总是0或1 -
哦,是的,谢谢@t1m0n。但是我现在很困惑,因为我还没有提交这段代码的前两次迭代。第一个是有效的,但它附加了另一个
-,因为值变为负数,所以它变为12--1。第二个;减量将绕过默认值 (12) 并进入无限数量。有一点帮助吗?设置小提琴。 -
很高兴看到小提琴。
-
完成@t1m0n。我已经编辑过了。
标签: javascript jquery datatables increment decrement