Checkbox status speichern

Ich weiß aber, dass ich z.B. den String:"gidFord" durch ne Variable, die den Status des Checkboxes enthält ersetzen muss

Ich weiss nicht, ob du darauf hinauswillst, aber du kannst per match()auch den Namen der versteckten Felder prüfen, ob er mit gid beginnt, und falls ja, die Automarke daraus extrahieren.

Ich glaube aber insgesamt, dass du das ganze speichern in den Cookies etwas anders machen solltest, um da Ordnung hineinzubekommen....sonst geht da alles Querbeet, jenachdem in welcher Reihenfolge sich die Formularelemente befinden.

Denkbar wäre bspw. Folgendes:
Du speicherst 1 Cookie pro Automarke, darin legst du, separiert durch Komma o.ä., den Namen des Modells ab, sofern die dazugehörige Checkbox aktivert ist(ist sie nict aktiviert, musst du natürlich das zugehörige Modell aus dem Cookie entfernen).

Das versteckte Feld brauchst du dann überhaupt nicht, da du einfach nur nachgucken musst, ob sich in dem Cookie überhaupt etwas befindet.
 
Hi, danke schon Mal.

Ich weiss nicht, ob du darauf hinauswillst, aber du kannst per match()auch den Namen der versteckten Felder prüfen, ob er mit gid beginnt, und falls ja, die Automarke daraus extrahieren.

Ja, sowas habe ich mir auch gedacht, und zwar muss ich den String spliten und daraus den Namen der Automarke abfragen.

....sonst geht da alles Querbeet, jenachdem in welcher Reihenfolge sich die Formularelemente befinden.

das befürchte ich, aber es kann sein dass das die sauberere und bessere Lösung wäre.

Denkbar wäre bspw. Folgendes:
...sofern die dazugehörige Checkbox aktivert ist(ist sie nict aktiviert, musst du natürlich das zugehörige Modell aus dem Cookie entfernen).

hießt das, den cookie muss ich am Anfang erstellen und dann pro aktivierter Checkbox den Inhlat von dem: "title" Attribute in dem entsprechenden cookie schireben?

Gruß
Messmar
 
Hi,

Jo, so hätte ich mir das gedacht.

dann wäre das hier ein Anfang...das ist zwar nicht elegant, aber ein Ansatzpunkt, glaube ich, und es funktioniert zum Teil auch außer dass die Werte dann verloren gehen, wenn ich weiter navigiere...Ist auch logisch, da die Werte nicht in dem Cookie gespeichert sind.
HTML:
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;
			   }
			   if(a[i].checked==true && a[i].title == 'Ford'){
				   alert('Ford Checkbox'); 
				   document.getElementById('gidFord').value=a[i].alt;
			   }
			   if(a[i].checked==true && a[i].title == 'Renault'){
				   alert('Renault Checkbox'); 
				   document.getElementById('gidRenault').value=a[i].alt;
			   }
			   if(a[i].checked==true && a[i].title == 'Vw'){
				   alert('Vw Checkbox'); 
				   document.getElementById('gidVw').value=a[i].alt;
			   }
                break;
              case 'unload':
                set_cookie(a[i].name,(a[i].checked)?1:0,1);
				
                break;
            }
        }
    }
}

Das Einzige und auch entscheidende, was es noch gemacht werden muss ist, den:
HTML:
document.getElementById('gidToyota').value=a[i].alt;

durch die Funktion für das Setzen von dem Cookie für das entsprechende Hidden Feld.

Frage: Wie kann ich jetzt die Funktion für das Setzen des Cookies des Hiddenfelds hier verschachteln bzw. einbinden/aufrufen, so dass es auch funkt.?

Danke und Gruß
Messmar
 
Zuletzt bearbeitet:
Jo, so hätte ich mir das gedacht.

was ist mit dem hier, dieser Versuch gibt mir nicht das gewünschte Ergebnis:
HTML:
<script>
window.onload=window.onunload=function(event)
{
 e=(window.event)?window.event:event;
 a=document.getElementsByTagName('input');
 k=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'); 
		    for(k=0;k<a.length;++k)
			   {
		            if(a[k].type=='text' && a[k].name)
			        {
			          a[k].value=(get_cookie(a[k].name)=='gidToyota')?a[i].title:'';
			          alert('HIDDEN LOAD:-->' + a[k].name + ':' + a[k].value);
					
			        }
			   }
			}
			break;
			   
	                   case 'unload':
	                   set_cookie(a[i].name,(a[i].checked)?1:0,1);
			   
			   if(a[i].checked==1 && a[i].title == 'Toyota'){
			   alert('-----------------> Toyota Checkbox'); 
			   for(k=0;k<a.length;++k)
			    {
			     if(a[k].type=='text' && a[k].name)
			        {
			          set_cookie(a[k].name,(a[k].value)?a[i].title:'',1);
				  alert('HIDDEN UNLOAD:-->' + a[k].name + ':' + a[k].value);
			                
			        }
			      }
			   }
			  //alert(a[i].checked);
               break;
           }
       }
   }
}
</script>

Gruß
Messmar
 
Zuletzt bearbeitet:
Code:
<script type="text/javascript">
<!--
c=[];
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)
        {
          pattern=new RegExp('\\b'+a[i].name+'\\b','g');
          switch(e.type)
            { 
              case 'load':
              if(typeof c[a[i].title]=='undefined')
                      {
                        c[a[i].title]=[(get_cookie(a[i].title))?get_cookie(a[i].title):'',a[i].alt];             
                      }
               if(c[a[i].title][0]!='' )
                  {
                    a[i].checked=(c[a[i].title][0].match(pattern))?true:false;
                  }
                break;
              case 'unload':
                c[a[i].title][0]=(a[i].checked)
                                ?(
                                  (!c[a[i].title][0].match(pattern))
                                      ? c[a[i].title][0]+','+ a[i].name
                                      : c[a[i].title][0]
                                  )
                                 :c[a[i].title][0].replace(pattern,'');
                break;
            }
        }
    }
    
    for(var k in c)
      {
        switch(e.type)
          {
            case 'load':
                    h=document.createElement('input');
                    h.name='gid'+k;
                    h.type='text';
                    if(c[k][0].match(/\w/)){h.value=c[k][1]}
                    document.forms[0].appendChild(h);   
                    break; 
            case 'unload':
                    c[k][0]=c[k][0].replace(/,+/g,',');
                    set_cookie(k,c[k][0],1)
          }
      }
}
//-->
</script>
<form>
<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">
</form>

Den Rest musste jetzt aber selbst hinkriegen, ich bin erstmal ein wenig auf Herrentagstour :-)
 
Zurück