Bonjour,
(Après pas mal de recherches préalables, je n'arrive pas à résoudre mon problème...alors merci de votre aide).
En fait je veux faire l'inverse du "Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others"
Autrement dit, quand je clique la dernière option de la ligne cela "checked" toutes les autres cases de la ligne.
J'ai repris le code proposé et j'ai changé les lignes suivantes pour qu'elles fassent le job :
// Uncheck the appropriate boxes in a row
if ($(thisCell).hasClass('exlusive-item')) {
$('.normal-item input[type="checkbox"]', thisRow).attr('checked', true);
}
else {
$('.exlusive-item input[type="checkbox"]', thisRow).attr('checked', false);
}
Quand je clique sur la dernière case à cocher : ça marche, toutes les cases de la ligne sont cochées (youpi).
Si je clique à présent sur une des premières cases, la dernière se décoche (youpi).
Si je reclique sur la dernière, elle se coche mais les autres ne se cochent pas (pas youpi).
Si je reclique sur une des premières cases, la dernière se décoche toujours.
En conclusion :
La fonction ajoutée à la dernière case à cocher ne fonctionne qu'une fois...
Alors que la fonction ajoutée aux autres cases fonctionne à chaque fois..
Je remets ci-dessous le code complet :
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
// Call the exclude function using question ID
excludeOpt({QID});
});
// A function to make the last option in each array row exclusive
function excludeOpt (qID) {
var thisQuestion = $('#question'+qID)
// Add some classes to the checkbox cells
$('td.checkbox-item', thisQuestion).addClass('normal-item');
$('tr.subquestion-list', thisQuestion).each(function(i) {
$('.normal-item:last', this).removeClass('normal-item').addClass('exlusive-item')
});
// A listener on the checkboxes
$('input[type="checkbox"]', thisQuestion).on('change', function (event) {
handleExclusive($(this).closest('td'));
});
function handleExclusive(thisCell) {
var thisRow = $(thisCell).closest('tr');
// Uncheck the appropriate boxes in a row
if ($(thisCell).hasClass('exlusive-item')) {
$('.normal-item input[type="checkbox"]', thisRow).attr('checked', true);
}
else {
$('.exlusive-item input[type="checkbox"]', thisRow).attr('checked', false);
}
// Check conditions (relevance)
$('td.checkbox-item', thisRow).each(function(i) {
var thisValue = '';
if($('input[type="checkbox"]', this).is(':checked')) {
thisValue = 1;
}
var thisSGQA = $('input[type="checkbox"]', this).attr('id').replace(/cbox_/, '');
$('input[type="hidden"]', this).attr('value', thisValue);
fixnum_checkconditions(thisValue, thisSGQA, 'hidden');
});
}
}
</script>
The topic has been locked.