当您选中其中一个框时,相应的表格单元格会删除其文本并将其放在输入文本值中。问题在于select all函数,因为它没有正确触发.change()事件。如果您选中一个方框,然后选中"选择全部"复选框,它清除单元格值。如何确定是否已经检查过,不执行.change()函数?
$("#selectall").click(function () {
var checkall = $("#selectall").prop('checked');
if (checkall) {
$('#amazon-update :checkbox').each(function () {
var $this = $(this);
if ($this.is(':checked')) {
//nothing
} else {
$(".checkbox").prop("checked", true).change();
}
});
} else {
$('#amazon-update :checkbox').each(function () {
var $this = $(this);
if ($this.is(':checked')) {
$(".checkbox").prop("checked", false).change();
} else {
//nothing
}
});
}
});
$(".checkbox").click(function () {
if ($(".checkbox").length == $(".checkbox:checked").length) {
$("#selectall").prop("checked", true);
} else {
$("#selectall").prop("checked", false);
}
});
$('#amazon-update :checkbox').change(function () {
var $this = $(this);
// $this will contain a reference to the checkbox
if ($this.is(':checked')) {
// the checkbox was checked
var sku_td = $this.parent().siblings('.sku').text();
var price_td = $this.parent().siblings('.price').text();
var quantity_td = $this.parent().siblings('.quantity').text();
$this.parent().siblings('.price').empty();
$this.parent().siblings('.quantity').empty();
var sku = $('<input type="hidden" name="sku[]" value="' + sku_td + '">');
var price = $('<input type="text" class="form-control" name="price[]" value="' + price_td + '">');
var quantity = $('<input type="text" class="form-control" name="quantity[]" value="' + quantity_td + '">');
$this.parent().siblings('.sku').append(sku);
$this.parent().siblings('.price').append(price);
$this.parent().siblings('.quantity').append(quantity);
} else {
// the checkbox was unchecked
var sku_td = $this.parent().siblings('.sku').children().val();
var price_td = $this.parent().siblings('.price').children().val();
var quantity_td = $this.parent().siblings('.quantity').children().val();
$this.parent().siblings('.sku').empty();
$this.parent().siblings('.price').empty();
$this.parent().siblings('.quantity').empty();
$this.parent().siblings('.sku').append(sku_td);
$this.parent().siblings('.price').append(price_td);
$this.parent().siblings('.quantity').append(quantity_td);
}
});
答案 0 :(得分:0)
我在小提琴上为你更新了代码。
主要问题在于这一行:
$(".checkbox").prop("checked", true).change();
而不是这一行应该是:
$ this.prop(“checked”,true).change()。
请参阅更新fiddler。