I have a table with a checkbox in the first column - when checked this performs an AJAX script that updates a PHP session variable with the selected values. I also have a check box at the top of the first column to allow the user to select all items in the table and perform an AJAX script.
I have this working for the "select all when not checked" state, i.e. when the page first loads. I now need to add the reverse state - unchecking all checkboxes on the page.
Here's how my table looks and the script that runs when you click the checkbox in the table header:
$(document).ready(function() {
$('.select-all').on('click', function() {
var values = []; // will contain all checkbox values that you can send via ajax
$('table > tbody input[type="checkbox"]').each(function(i, el) {
$(el).prop('checked', true);
values.push(el.value);
});
var productIDs = values.join();;
// Create a reference to $(this) here:
$this = $(this);
$.post('productSelections.php', {
type: 'updateSelections',
productIDs: productIDs,
selectionType: 'single'
}, function(data) {
data = JSON.parse(data);
if (data.error) {
var ajaxError = (data.text);
var errorAlert = 'There was an error updating the Product Selections Selections - ' + ajaxError;
$this.closest('td').addClass("danger");
//display AJAX error details
$("#updateSelectionsErrorMessage").html(errorAlert);
$("#updateSelectionsError").show();
return; // stop executing this function any further
} else {
$this.closest('td').addClass("success")
$this.closest('td').removeClass("danger");
}
}).fail(function(xhr) {
var httpStatus = (xhr.status);
var ajaxError = 'There was an error updating the Product Selections - AJAX request error. HTTP Status: ' + httpStatus + '. Please contact Apple Business Operations';
$this.closest('td').addClass("danger");
$("#updateSelectionsErrorMessage").html(ajaxError);
$("#updateSelectionsError").show();
$this.attr('checked', false); // Unchecks it
});
});
});
<script src="http://ift.tt/1oMJErh"></script>
<table class="table table-condensed table-striped table-bordered">
<thead>
<th><input type="checkbox" class="select-all checkbox" name="select-all" /></th>
<th class="text-center" scope="col">Product ID</th>
<th class="text-center" scope="col">Description</th>
</thead>
<tbody>
<tr class="" id="85799">
<td id="AT36288"><input type="checkbox" class="select-item checkbox" name="select-item" value="AT36288" /></td>
<td>AT36288</td>
<td>Apples</td>
<td></td>
</tr>
<tr class="" id="85800">
<td id="AT36289"><input type="checkbox" class="select-item checkbox" name="select-item" value="AT36289" /></td>
<td>AT36289</td>
<td>Bananas</td>
<td></td>
</tr>
<tr class="" id="85801">
<td id="AT36290"><input type="checkbox" class="select-item checkbox" name="select-item" value="AT36290" /></td>
<td>AT36290</td>
<td>Oranges</td>
<td></td>
</tr>
<tr class="" id="85803">
<td id="AT36292"><input type="checkbox" class="select-item checkbox" name="select-item" value="AT36292" /></td>
<td>AT36292</td>
<td>Grapes</td>
<td></td>
</tr>
</tbody>
</table>
I just can't work out what to change to uncheck all checkboxes if they are currently checked?
Aucun commentaire:
Enregistrer un commentaire