Checkbox status speichern

Hier mal ne Beispielfunktion, welche das tut:
Code:
<script type="text/javascript">
<!--
window.onload=window.onunload=function(event)
{
  e=(window.event)?window.event:event;
  a=document.getElementsByTagName('input');
  for(i=0;i<a.length;++i)
    {
      if(a[i].type=='checkbox' && a[i].name)
        {
          switch(e.type)
            {
              case 'load':
               a[i].checked=(get_cookie(a[i].name)==1)?true:false;
                break;
              case 'unload':
                set_cookie(a[i].name,(a[i].checked)?1:0,1);
                break;
            }
        }
    }
}
//-->
</script>

Sie geht alle Checkboxen beim onload und beim onunload durch und speichert den Status bzw. liest ihn aus und aktiviert die Boxen bei Bedarf.
Pro Checkbox wird ein Cookie gesetzt...Name==Name der Checkbox,Wert:1 oder 0, jenachdem.

Müsste man natürlich noch etwas modifizieren, wenn du mehrere gleichnamige Checkboxen hast...und bedenke, dass diese Cookies in allen Dokumenten der Domain existieren, nicht nur in dem, wo sie gesetzt wurden.

Dazu benötigst du noch des Weiteren die Funktionen get_cookie() bzw. set_cookie()...diese findest du in diesem Thema: http://www.tutorials.de/forum/javascript-ajax/215012-probleme-mit-cookies.html
 
Hallo,

Hier mal ne Beispielfunktion, ...

Es funkt. einwandfrei ;-)

Ich habe dazu 9 Text Felder vom Type: "hidden", die je nach aktiviertem Checkbox, mit einer Zahl befüllt werden.

d.h. in jedem Checkbox, habe ich das Attribute: "title" mit der entsprechenden AutoMarke aus der Datenbank vorbelegt.
Es kann aber innerhalb einer Seite z.B. drei Checkboxen mit unterschiedlichem Namen geben, allerdings mit dem gleichen Title (brand).

z:B.
HTML:
<input name="Avensis" title="Toyota" alt="22222222" value="Avensis" lang="18285 - 20135" type="checkbox">
<input name="Corolla" title="Toyota" alt="22222222" value="Corolla" lang="15290 - 18150" type="checkbox">
<input name="Focus CC" title="Ford" alt="66666666" value="Focus CC" lang="16810 - 20275" type="checkbox">
<input name="A3" title="Audi" alt="88888888" value="A3" lang="19215 - 21430" type="checkbox">
<input name="Scion" title="Toyota" alt="22222222" value="Avensis" lang="18285 - 20135" type="checkbox">

Ich will also erreichen, wenn es mindestens einer der Checkboxen von Toyota z.B. aktiviert ist, dass das hidden Textfeld im Formular mit der Zahl: "22222222" belegt wird, und nur wenn keiner der drei aktiviert ist, dann soll/muss das hidden Feld für Toyota leer sein.

ich will es auch in dem Cookie speichern und zwar folgendermaßen, aber es haut nicht hin:
HTML:
<script>
window.onload=window.onunload=function(event)
{
	e=(window.event)?window.event:event;
	a=document.getElementsByTagName('input');
	for(i=0;i<a.length;++i)
	{
	     if(a[i].type=='checkbox' && a[i].name)
		{
		     switch(e.type)
			{
			      case 'load':
			      a[i].checked=(get_cookie(a[i].name)==1)?true:false;
			      alert(a[i].name + "-->>>>" + a[i].checked + "Brandname -->>>" + a[i].title);
				if(a[i].checked=='true' && a[i].title == 'Toyota'){
					alert('Toyota Checkbox'); 
									     document.getElementById('gidToyota').value=a[i].alt;
								   }else{document.getElementById('gidToyota').value='';}
		              break;
			      case 'unload':
		              set_cookie(a[i].name,(a[i].checked)?1:0,1);
			      alert(a[i].checked);
		              break;
		              }
		         }
		}
	}
//-->
</script>

Das Schreiben in dem hidden Feld funkt. beim ersten Mal, aber wenn ich zur nächsten Seite bzw. nächste Vier oder 5 Datensätze navigiere, dann ist es wieder leer. Irgendwie schaffe ich es nicht den Inhalt des Hiddenfelds in dem Cookie zu speichern und dessen Inhalt im Laufe der ganzen Applikation zu behalten.

Für Jede weitere/weiteren Hilfe/Tipp, bin ich sehr dankbar.

Danke und gruß
Messmar
 
Naja....erstmal jenes:
Code:
a[i].checked=='true'

...das haut so nicht hin, true gehört da ohne Anführungzeichen geschrieben, da dort ein boolescher Wert gesucht wird und keine Zeichenkette.

Weiterhin:
Code:
else{document.getElementById('gidToyota').value='';}

Angenommen, du hast Avensis gecheckt, Corolla aber nicht...dann leerst du das Feld ja beim Corolla wieder, obwohl es gefüllt bleiben soll(zumindest hab ich dich so verstanden)...lasse den else-Zweig einfach weg.

Was den Cookie für das versteckte input betrifft..ich sehe da nicht, wo du den setzt bzw. abfragst :-(
 
...da dort ein boolescher Wert gesucht wird und keine Zeichenkette

Du hast Recht ;-( Tipfehler bzw. Denkfehler

...lasse den else-Zweig einfach weg.

...das werde ich versuchen bzw. probieren...hoffe dass es hinhaut.
Was den Cookie für das versteckte input betrifft..ich sehe da nicht, wo du den setzt bzw. abfragst :-(

;-(( hmmm Wieso nicht? das hidden Feld ist im Laufe der ganzen Applikation mit dem Namen: "gidToyota" vorhanden... sein Inhalt kann doch in dem Cookie gesetzt und bei Bedarf angezeigt werden.

Danke und Gruß
Messmar
 
;-(( hmmm Wieso nicht? das hidden Feld ist im Laufe der ganzen Applikation mit dem Namen: "gidToyota" vorhanden... sein Inhalt kann doch in dem Cookie gesetzt und bei Bedarf angezeigt werden.

Danke und Gruß
Messmar

Jo, kann....und wie hast du es gemacht, dass es nicht ging?
.....
Irgendwie schaffe ich es nicht den Inhalt des Hiddenfelds in dem Cookie zu speichern und dessen Inhalt im Laufe der ganzen Applikation zu behalten.
 
Hi Sven,

Jo, kann....und wie hast du es gemacht, dass es nicht ging?
.....

Folgendermaßen:
HTML:
if(a[i].type=='hidden' && a[i].name){
   switch(e.type){
     case 'load':
     a[i].value=(get_cookie(a[i].name)=='gidFord')?true:false;
     alert(a[i].name + "::::::::::: " + a[i].value);
     break;
     case 'unload':
     set_cookie(a[i].name,(a[i].value)?1:0,1);
     break;
  }
}

Ich weiß aber, dass ich z.B. den String:"gidFord" durch ne Variable, die den Status des Checkboxes enthält ersetzen muss, aber da komme ich nicht drauf...weiterhin musste ich diese Abfrage innerhalb der anderen Checkboxen Abfrage, die den CheckboxStatus im Cookie setzt, einfügen etc.

Mir würde auch reichen, wenn ich es hin bekomme, dass ein Hiddenfeld, das ein Checkbox entspricht (für Toyota, Renault oder VW etc.), den Wert true enthält, solange es mindesten ein Checkbox dieser Marke aktiviert ist bzw. gechecked ist.

Da ich am Ende der Pagination, diese, in den Hiddenfeldern gespeicherten, Daten per Request (Formular Submit) an den Server schicke.

Gruß
Messmar
 
Zurück