jQuery: décochez une autre case sur une case cochée

J’ai un total de 6 cases à cocher (peut être append plus à l’avenir) et je veux autoriser seulement en sélectionner un, donc lorsque l’utilisateur a coché l’un d’entre eux devrait être décoché.

J’ai essayé avec ce code et fonctionne bien si je définissais un identifiant mais je me demande maintenant comment le rendre vice-versa de manière efficace si à l’avenir j’ajoute plus que cela ne posera pas de problème

$('#type1').click(function() { $('#type2').not('#type1').removeAttr('checked'); }); 

FYI, les cases à cocher ne sont pas frères et sont différents

Liez un gestionnaire de change , puis décochez toutes les cases, à l’exception de celle cochée:

 $('input.example').on('change', function() { $('input.example').not(this).prop('checked', false); }); 

Voici un violon

vous pouvez utiliser class pour toutes vos cases à cocher et faire:

 $(".check_class").click(function() { $(".check_class").attr("checked", false); //uncheck all checkboxes $(this).attr("checked", true); //check the clicked one }); 

Essaye ça

  $(function() { $('input[type="checkbox"]').bind('click',function() { $('input[type="checkbox"]').not(this).prop("checked", false); }); }); 

Essaye ça

 $("[id*='type']").click( function () { var isCheckboxChecked = this.checked; $("[id*='type']").attr('checked', false); this.checked = isCheckboxChecked; }); 

Pour le rendre encore plus générique, vous pouvez également trouver des cases à cocher en fonction de la classe commune implémentée.

Modifié…

Je pense que la méthode prop est plus pratique quand il s’agit d’atsortingbut booléen. http://api.jquery.com/prop/

 $('.cw2').change(function () { if ($('input.cw2').filter(':checked').length >= 1) { $('input.cw2').not(this).prop('checked', false); } }); $('td, input').prop(function (){ $(this).css({ 'background-color': '#DFD8D1' }); $(this).addClass('changed'); });