I have a table which is contains a td that have checkbox for each row when clicking on the checkbox all the td values converting into an inputs that contains values.
I want to do the job of each checkbox when check all the checkboxes in the same time.
This GIF will explain what I mean clearly:
And This is my html code:
<form method="post" id="update_form">
<table id="table" class="table table-bordered table-striped responsive-table">
<thead>
<tr>
<th><input type="checkbox" name="checkall" class="checkall"/></th>
<th>اسم الصنف</th>
<th>الكمية</th>
<th>السعر</th>
<th>القيمة</th>
</tr>
</thead>
<tbody id="order_items"></tbody>
</table>
<input type="submit" name="multiple_update" id="multiple_update" class="btn btn-sm btn-success" value="تعديل الطلب" disabled/>
</form>
My JS code for checking all the checkboxes:
$(document).on('click', '.checkall', function(){
if (this.checked) {
$(".check_box").prop("checked", true);
} else {
$(".check_box").prop("checked", false);
}
});
And the JS code for fetching the data:
// Fetching the order details
function fetch_data(){
var id = "<?php echo $id; ?>";
$.ajax({
url:"pages/Model/GetOrderDetails.php",
method:"POST",
data:{id:id},
dataType:"json",
success:function(data)
{
var html = '';
for(var count = 0; count < data.length; count++)
{
html += '<tr>';
html += '<td><input type="checkbox" id="'+data[count].ID+'" data-name="'+data[count].item_name+'" data-quantity="'+data[count].quantity+'" data-price="'+data[count].price+'" data-total="'+data[count].total+'" class="check_box"/></td>';
html += '<td class="col-lg-4">'+data[count].item_name+'</td>';
html += '<td>'+data[count].quantity+'</td>';
html += '<td>'+data[count].price+'.00</td>';
html += '<td class="total">'+data[count].total+'.00</td>';
html += '</tr>';
}
html += '<td colspan="4" style="font-weight:600">الإجمالي</td>';
html += '<td id="gross_amount" style="font-weight:600">'+fetch_order_value();+'</td>';
$('#order_items').html(html);
}
});
}
fetch_data();
And JS for the job of each td checkbox in the table:
// On check edit on order
$(document).on('click', '.check_box', function(){
var html = '';
var id = $(this).attr('ID');
var name = $(this).data('name');
$.ajax({
type: 'POST',
url: 'pages/Model/GetItemName.php',
data:{name:name},
success: function(data){
$('#name'+id).html(data);
}
});
if(this.checked)
{
$('#multiple_update').removeAttr('disabled');
html = '<td><input type="checkbox" id="'+$(this).attr('ID')+'" data-name="'+$(this).data('name')+'" data-quantity="'+$(this).data('quantity')+'" data-price="'+$(this).data('price')+'" data-total="'+$(this).data('total')+'" class="check_box" checked/></td>';
html += '<td class="col-lg-4"><select id="name'+id+'" name="name[]" class="form-control name"></select></td>';
html += '<td><input type="number" name="quantity[]" class="form-control quantity" min="1" required value="'+$(this).data("quantity")+'"/></td>';
html += '<td><input type="text" name="price[]" class="form-control price" value="'+$(this).data("price")+'.00"/ readonly></td></td>';
html += '<td><input type="text" name="total[]" class="form-control total" value="'+$(this).data("total")+'.00" readonly/><input type="hidden" name="hidden_id[]" value="'+$(this).attr('id')+'" /></td>';
}
else
{
html = '<td><input type="checkbox" id="'+$(this).attr('ID')+'" data-name="'+$(this).data('name')+'" data-quantity="'+$(this).data('quantity')+'" data-price="'+$(this).data('price')+'" data-total="'+$(this).data('total')+'" class="check_box" /></td>';
html += '<td class="col-lg-4">'+$(this).data('name')+'</td>';
html += '<td>'+$(this).data('quantity')+'</td>';
html += '<td>'+$(this).data('price')+'.00</td>';
html += '<td>'+$(this).data('total')+'.00</td>';
}
$(this).closest('tr').html(html);
});
I hope you guys getting my problem perfectly I did my best to explain what I exactly want.
Thanks in advance.
2
Answers
After you check all/uncheck all checkboxes you can trigger a click event on the checkboxes, which will behave the same way as it the were all checked
let’s start with your 2nd code
change to:
But please do you have any idea how to click on all checkboxes even if they are disabled?
so i think you should move the code that handles the onclick event to a new function