Έχω μια σελίδα με διάφορα πλαίσια ελέγχου. Μπορώ να ελέγξω μερικά από αυτά και να πάει στην επόμενη σελίδα, όταν επιστρέψω σε αυτή τη σελίδα, αυτά τα πλαίσια ελέγχου πρέπει να παραμείνουν ελέγχονται όπως ήταν πριν από την πλοήγηση σε άλλη σελίδα. Πρέπει να το κάνουμε με Javascript. Κανένα στοιχείο??
επιμονή των τιμών κουτάκι
Θα πρέπει να τους εξακολουθούν να υφίστανται μεταξύ των σελίδων αιτήματα. Μπορείτε να χρησιμοποιήσετε συνεδρίες ή τα cookies να το κάνουμε αυτό. Τι είδους του server που εργάζονται για και με τι είδους server-side γλώσσα;
Προηγούμενες ερωτήσεις σχετικά SO έχουν διεύθυνση γραφή / ανάγνωση cookies από το JavaScript.
Αν είστε περιορίζεται μόνο σε JavaScript και καμία πλευρά του διακομιστή γλώσσα Νομίζω ότι έχετε μείνει να διαβάσει / γράφει cookies για τη διατήρηση της κατάστασης. Όπως άλλοι έχουν αναφορά, πλευρά του server τεχνολογίες είναι πολύ καλύτερα σε αυτό, αλλά αν πρέπει:
Javascript για δείγμα μπισκότο κώδικα (αναφορά: 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);
}
Δεν νομίζω ότι υπάρχει κάποια εύλογα πολύπλοκο τρόπο για να το κάνει χωρίς να έχει πρόσβαση στον server-side κώδικα, επειδή το ελάχιστο που πρέπει να εγκαταστήσετε τον κωδικό σας, αλλά και τον εντοπισμό των ελέγχων HTML π.χ. για να τους ελέγξει. Είμαι δίνοντας λογικές κώδικα που κάνει ό, τι θέλετε στη συνέχεια.
Σημαντικές σημειώσεις:
- Ο κώδικας απαιτεί ότι κάθε πλαίσιο ελέγχου δίνεται μια ξεχωριστή ιδιότητα id.
- Η κατάσταση ελέγχου αποθηκεύεται σε ένα cookie που ονομάζεται «JS_PERSISTENCE_COOKIE». Θα ήταν καλύτερο να αποθηκεύσετε το όνομα του αυτό το cookie σε μία μεταβλητή αντί να ενσωματώνουμε σε ένα-δυο ξεχωριστά μέρη, όπως έχω κάνει. Τι είδους μεταβλητή θα πρέπει να αποθηκεύσετε το όνομα εξαρτάται από την εφαρμογή και τις απαιτήσεις σας.
- Θα ήταν καλύτερα να συσκευάζουν το κωδικό μέσα σε ένα αντικείμενο και όχι ως μια δέσμη των ελεύθερων λειτουργίες όπως έχω κάνει. Ωστόσο, αυτό δεν έχει σχέση με το αρχικό σας ερώτημα.
- Αφού κάνετε κλικ μερικά πλαίσια ελέγχου, μπορείτε να προσομοιώνουν «πλοήγηση πίσω σε αυτή τη σελίδα» πατώντας CTRL + F5. F5 από μόνη της δεν είναι αρκετή.
Εδώ είναι ο κώδικας και μερικές 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>













