J'ai une page avec plusieurs cases à cocher. Je vérifie quelques-unes d'entre elles et je passe à la page suivante, quand je reviens sur cette page, ces cases à cocher doivent rester cochées comme elles l'étaient avant de naviguer vers une autre page. Besoin de le faire avec Javascript. Un indice?persistance des valeurs de case à cocher
Répondre
Vous devrez les conserver entre les demandes de page. Vous pouvez utiliser des sessions ou des cookies pour cela. Sur quel type de serveur travaillez-vous et avec quel type de langage côté serveur?
Les questions précédentes sur le SO ont des adresses d'écriture/lecture des cookies de JavaScript.
Si vous êtes limité à seulement JavaScript et aucun langage côté serveur, je pense que vous reste à lire/écrire des cookies pour maintenir l'état. Comme d'autres l'ont mentionné, les technologies côté serveur sont beaucoup mieux à cela, mais si vous devez:
code JavaScript exemple de cookie (référence: http://www.quirksmode.org/js/cookies.html):
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
Je ne pense pas qu'il y ait une façon assez compliquée à faites-le sans avoir accès au code côté serveur, car vous devez au minimum avoir besoin de pour installer votre code et aussi identifier les commandes HTML par exemple afin de les vérifier. Je donne un code raisonnable qui fait ce que vous voulez ci-dessous.
Remarques importantes:
- Le code EXIGE que chaque case est donnée un attribut distinct id.
- L'état de vérification est stocké dans un cookie nommé 'JS_PERSISTENCE_COOKIE'. Il serait préférable de stocker le nom de ce cookie dans une variable au lieu de le coder en dur dans deux endroits différents comme je l'ai fait. Quel type de variable devrait stocker le nom dépend de votre application et des exigences.
- Il vaudrait mieux empaqueter le code dans un objet plutôt que comme un tas de fonctions libres comme je l'ai fait. Cependant, ceci n'est pas pertinent pour votre question initiale.
- Après avoir cliqué sur des cases à cocher, vous pouvez simuler "revenir à cette page" en appuyant sur CTRL + F5. F5 seul ne suffit pas.
Voici le code et quelques échantillons pour les tests HTML:
<body onload="restorePersistedCheckBoxes()">
<input type="checkbox" id="check1" onclick="persistCheckBox(this)" />
<input type="checkbox" id="check2" onclick="persistCheckBox(this)" />
<input type="checkbox" id="check3" onclick="persistCheckBox(this)" />
<input type="button" value="Check cookie"
onclick="alert(document.cookie)" />
<input type="button" value="Clear cookie"
onclick="clearPersistenceCookie()" />
<script type="text/javascript">
// This function reads the cookie and checks/unchecks all elements
// that have been stored inside. It will NOT mess with checkboxes
// whose state has not yet been recorded at all.
function restorePersistedCheckBoxes() {
var aStatus = getPersistedCheckStatus();
for(var i = 0; i < aStatus.length; i++) {
var aPair = aStatus[i].split(':');
var el = document.getElementById(aPair[0]);
if(el) {
el.checked = aPair[1] == '1';
}
}
}
// This function takes as input an input type="checkbox" element and
// stores its check state in the persistence cookie. It is smart
// enough to add or replace the state as appropriate, and not affect
// the stored state of other checkboxes.
function persistCheckBox(el) {
var found = false;
var currentStateFragment = el.id + ':' + (el.checked ? '1' : '0');
var aStatus = getPersistedCheckStatus();
for(var i = 0; i < aStatus.length; i++) {
var aPair = aStatus[i].split(':');
if(aPair[0] == el.id) {
// State for this checkbox was already present; replace it
aStatus[i] = currentStateFragment;
found = true;
break;
}
}
if(!found) {
// State for this checkbox wasn't present; add it
aStatus.push(currentStateFragment);
}
// Now that the array has our info stored, persist it
setPersistedCheckStatus(aStatus);
}
// This function simply returns the checkbox persistence status as
// an array of strings. "Hides" the fact that the data is stored
// in a cookie.
function getPersistedCheckStatus() {
var stored = getPersistenceCookie();
return stored.split(',');
}
// This function stores an array of strings that represents the
// checkbox persistence status. "Hides" the fact that the data is stored
// in a cookie.
function setPersistedCheckStatus(aStatus) {
setPersistenceCookie(aStatus.join(','));
}
// Retrieve the value of the persistence cookie.
function getPersistenceCookie()
{
// cookies are separated by semicolons
var aCookie = document.cookie.split('; ');
for (var i=0; i < aCookie.length; i++)
{
// a name/value pair (a crumb) is separated by an equal sign
var aCrumb = aCookie[i].split('=');
if ('JS_PERSISTENCE_COOKIE' == aCrumb[0])
return unescape(aCrumb[1]);
}
return ''; // cookie does not exist
}
// Sets the value of the persistence cookie.
// Does not affect other cookies that may be present.
function setPersistenceCookie(sValue) {
document.cookie = 'JS_PERSISTENCE_COOKIE=' + escape(sValue);
}
// Removes the persistence cookie.
function clearPersistenceCookie() {
document.cookie = 'JS_PERSISTENCE_COOKIE=' +
';expires=Fri, 31 Dec 1999 23:59:59 GMT;';
}
</script>
</body>
- 1. Case à cocher d'image de case à cocher dans UITableViewCell
- 2. Récupération de valeurs à partir d'une case à cocher
- 3. Valeurs de case à cocher et l'utilisationBean tag
- 4. Struts case à cocher
- 5. C# case à cocher eventhandler
- 6. VbScript ASP: case à cocher
- 7. Liste déroulante Case à cocher
- 8. yahoo mail case à cocher
- 9. case à cocher dans UltraGrid
- 10. Supprimer plusieurs éléments par case à cocher
- 11. Insérer des valeurs de case à cocher dans la base de données
- 12. Silverlight DataGrid La case à cocher Dynamique de la case à cocher doit cliquer sur l'événement
- 13. Case à cocher de sélection avec déclencheurs?
- 14. Validation de la case à cocher
- 15. Comment désactiver la case à cocher de la case à cocher dans DataGridView - Windows Forms?
- 16. ASP.NET MVC - Comment obtenir des valeurs de case à cocher sur le poste
- 17. valeur d'impression de la case à cocher
- 18. Valeur de la case à cocher
- 19. Cellule de case à cocher Datagrid
- 20. case à cocher permet à Jquery
- 21. C# wpf question case à cocher personnalisée
- 22. Case à cocher dans le contrôle listview
- 23. Case à cocher dans un rapport Crystal
- 24. TriState Case à cocher - comment changer l'ordre des états
- 25. Comment créer un formulaire Django qui affiche un libellé de case à cocher à droite de la case à cocher?
- 26. Test case à cocher cliquez sur
- 27. asp.net gridview case à cocher sélection
- 28. Infopath 2007: Cacher une case à cocher
- 29. case à cocher multiligne dans wxpython
- 30. Case à cocher ne pas conserver l'état