我这里有一个脚本获取所有行输入的总和。如果to qty_total字段为空或等于零,我需要做的是禁用每行的添加按钮。这就是我现在所拥有的http://jsfiddle.net/xt4HK/2/
任何帮助都会表示赞赏。
$('.qtys').blur(function () {
var sum = 0;
$(this).closest('tr').find('.qtys').each(function () {
sum += Number($(this).val());
});
$(this).closest('tr').find('.qty_total').val(sum);
});
$('.qty_total').each(function() {
if ($(this).val() != "") {
$('.add_to_cart').prop("disabled",false);
} else {
$('.add_to_cart').prop("disabled",true);
}
});
答案 0 :(得分:1)
您可以使用attr()
和removeAttr()
,并且需要将每个循环放在事件中。
做这样的事情:
$('.qty_total').each(function() {
if ($(this).val() != "") {
$(this).closest('tr').find('.add_to_cart').removeAttr("disabled");
} else {
$(this).closest('tr').find('.add_to_cart').attr("disabled","disabled");
}
});
并将此置于模糊事件中。
或者您可以像这样使用prop()
:
$('.qty_total').each(function() {
if ($(this).val() != "") {
$(this).closest('tr').find('.add_to_cart').prop("disabled",false);
} else {
$(this).closest('tr').find('.add_to_cart').prop("disabled",true);
}
});
答案 1 :(得分:1)
您可以在onblur
事件处理程序中禁用该按钮,因为如果不这样做,在重新编辑后再次使总数变为空,则该按钮不会被禁用。
$('.qtys').blur(function () {
var sum = 0;
$(this).closest('tr').find('.qtys').each(function () {
sum += Number($(this).val());
});
$(this).closest('tr').find('.qty_total').val(sum)
.closest('td').next()
.find('.add_to_cart')[0].disabled = sum == 0;
}).blur();
答案 2 :(得分:1)
$('.qty_total').each(function () {
if ($(this).val() == "") {
$('.add_to_cart').attr("disabled", "disabled");
} else {
$('.add_to_cart').removeAttr("disabled");
}
});
答案 3 :(得分:0)
//disable all add buttons on document load
$('.add_to_cart').prop("disabled",true);
$('.qtys').blur(function () {
var sum = 0;
$(this).closest('tr').find('.qtys').each(function () {
sum += Number($(this).val());
});
var qtyEle = $(this).closest('tr').find('.qty_total');
qtyEle.val(sum);
//check if sum exists and enable/disable accordingly
$(this).parents("tr").find(".add_to_cart").prop("disabled", !sum);
});
答案 4 :(得分:0)
checkTotal();
$('.qtys').blur(function () {
var sum = 0;
$(this).closest('tr').find('.qtys').each(function () {
sum += Number($(this).val());
});
$(this).closest('tr').find('.qty_total').val(sum);
checkTotal();
});
function checkTotal(){
$('.qty_total').each(function() {
if ($(this).val() === "" || $(this).val() === 0 ) {
$(this).closest('tr').find('.add_to_cart').prop("disabled",true);
} else {
$(this).closest('tr').find('.add_to_cart').prop("disabled",false);
}
});
}
优化版本 Fiddle
$('.add_to_cart').prop("disabled",true);
$('.qtys').blur(function () {
var sum = 0;
var parentTr = $(this).closest('tr');
parentTr.find('.qtys').each(function () {
sum += Number($(this).val());
});
parentTr.find('.qty_total').val(sum);
parentTr.find('.add_to_cart').prop("disabled",(sum === "" || sum === 0));
});
更改:
if()
条件错了,反之亦然。checkTotal()
。value = 0
的条件。<button>
找到相应的$(this).closest('tr').find('.add_to_cart')
;而不是$('.add_to_cart')
- 这将禁用/启用所有按钮。答案 5 :(得分:0)
只需输入$('.qty_total').each
代码,但您也应该修改一些内容:
$('.qtys').blur(function () {
var sum = 0;
$(this).closest('tr').find('.qtys').each(function () {
sum += Number($(this).val());
});
$(this).closest('tr').find('.qty_total').val(sum);
// put this piece inside.
$('.qty_total').each(function() {
if ($(this).val() != "") {
// prop --> attr and other change.
$(this).closest('tr').find('.add_to_cart').attr("disabled",false);
} else {
// prop --> attr and other change.
$(this).closest('tr').find('.add_to_cart').attr("disabled",true);
}
});
});
答案 6 :(得分:0)
$('.qty_total').each(function() {
if ($(this).val() != "") {
$(this).parent('tr').find('.add_to_cart').prop("disabled",false);
} else {
$(this).parent('tr').find('.add_to_cart').prop("disabled",true);
}
});
如果你使用$(&#39; .add_to_cart&#39;),JQuery返回所有元素都有class =&#34; add_to_cart&#34;。
答案 7 :(得分:0)
尝试这个,模拟文本框上的更改事件。
$('.add_to_cart').prop("disabled",true);
$('.qtys').blur(function () {
var sum = 0;
$(this).closest('tr').find('.qtys').each(function () {
sum += Number($(this).val());
});
$(this).closest('tr').find('.qty_total').val(sum).change();
});
$(document).on('change','.qty_total',function() {
if ($(this).val() != "" || $(this).val() != 0) {
$(this).parent().parent().find('.add_to_cart').prop("disabled",false);
} else {
$(this).parent().parent().find('.add_to_cart').prop("disabled",true);
}
});