Lorsque l'on place une case à cocher avec la propriété "Sélection" cochée dans une table liste alors la sélection est obligatoirement en multi-sélection.
Par exemple :
<table cols="2" id="TBL_1" width="75%" border="1" cellpadding="1" cellspacing="1"> <tbody><adelia:tablelist name="TBL_1"> <tr> <td><adelia:checkbox type="BOOL" selection="true"><input type="checkbox" name="_FLAGSEL" id="_FLAGSEL" /></adelia:checkbox></td> <td><adelia:outputfield name="CHO_1" type="NB2" refc="false"/></td> </tr> </adelia:tablelist></tbody> </table>
Pour simuler la mono-sélection, il faut passer par une fonction Javascript :
<table cols="2" id="TBL_1" width="75%" border="1" cellpadding="1" cellspacing="1"> <tbody><adelia:tablelist name="TBL_1"> <tr> <td><adelia:checkbox type="BOOL" selection="true"><input type="checkbox" name="_FLAGSEL" id="_FLAGSEL" onclick="return checkOnlyOne(this, 'TBL_1', 'ID_WPAGE1', 'TBL_1', true)"/></adelia:checkbox></td> <td><adelia:outputfield name="CHO_1" type="NB2" refc="false"/></td> </tr> </adelia:tablelist></tbody> </table>
Voici la définition de la fonction checkOnlyOne :
<script> //<![CDATA[ // Fonction qui permet de ne cocher qu'une case à cocher à la fois. // idTable : Valeur de l'attribut id du tag TABLE si la case à cocher est contenue dans une table. Passer null sinon. // adeliaPageName : Nom de la page Adelia // adeliaListName : Nom de la table liste (adelia:tablelist) ou liste (adelia:b_list) Adelia // zeroOrOne : true si on veut aucune ou une case à cocher cochée; false sinon (à la manière d'une liste de bouton radio : si une case à cocher est cochée alors on ne peut pas retourner dans l'état aucune case à cocher cochée) function checkOnlyOne(objCheckbox, idTable, adeliaPageName, adeliaListName, zeroOrOne) { var tabInput = idTable != null ? document.getElementById(idTable).getElementsByTagName('input') : document.getElementsByTagName('input'); var i, lgTabInput = tabInput.length, objInput, objCheckboxChecked = null; var checkboxPrefix = ':lst:' + adeliaPageName + ':' + adeliaListName + ':_FLAGSEL:'; // Recherche d'une case a cocher cochée dans la table liste for (i = 0; i < lgTabInput; i++) { objInput = tabInput[i]; if (objInput != objCheckbox && objInput.getAttribute('type') == 'checkbox' && objInput.checked && objInput.name && objInput.name.indexOf(checkboxPrefix) == 0) { objCheckboxChecked = objInput; break; } } if (objCheckboxChecked) { if (objCheckbox.checked) { // l'utilisateur tente de cocher // on decoche l'ancienne case a cocher objCheckboxChecked.checked = false; } else { // l'utilisateur tente de decocher if (! zeroOrOne) // on interdit le decochage return false; } } else { // l'utilisateur tente de decocher if (! objCheckbox.checked && ! zeroOrOne) // on interdit le decochage return false; } return true; } //]]> </script>
Articles connexes