# inhalt der textfelder nach refresh erhalten



## jantar (15. Oktober 2004)

Hallo

wie kann ich einen refresh einer page machen ohne das der inhalt meiner textbox bzw listbox verloren geht?  beim mozilla ist das alles kein problem da bleiben die einträge erhalten aber beim internetexplorer  es einfach nicht ... leider kann ich ja die parameter aus der form auch nicht übergeben per link da ja die form immer nur einen link zulässt ....



für hilfe wäre ich ech dankbar .... weil ich sollte schon vorgestern fertig sein ...wie immer


----------



## redlama (15. Oktober 2004)

Also ich weiß nicht was Du hast, bei mir bleiben die Daten, die ich in mein Eingabefeld geschrieben habe beim refresh erhalten, nur die Auswahl aus <select> oder so geen verloren. Da kann man (glaube ich zumindest) aber nichts machen.

redlama


----------



## jantar (15. Oktober 2004)

naja beim mozilla funktioniert das ja auch ... aber beim ie 6.0 ...keine chance welchen nutz du?


----------



## Andreas Gaisbauer (15. Oktober 2004)

Da gibts gleich mehrere möglichkeiten:
1) Du lässt "onchange" via Javascript die Values der Felder in ein Cookie schreiben. Beim Laden der Seite überprüfst du ob ein Cookie gesetzt ist -> wenn ja, kannst du die Inhalte in die Felder Parsen

2) Im IE gibt es den "onbeforeunload" Eventhandler (http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onbeforeunload.asp)- der wird gefeuert bevor die Seite verlassen wird. Hier könntest du zum Beispiel auch das Cookie setzen lassen, oder die Daten an die Url anhängen um sie dannch wieder einzulesen.

3) wenn du mit Frames arbeitest, kannst du via Javascript die Eingaben in einem anderen Frame zwischenspeichern um sie dannach wieder einzulesen (wird nicht funktionieren wenn du mit F5 das ganze Frameset aktualisierst).

4) Wenn du mit Serverseitigen Sprachen arbeiten kannst, kannst du via Remotescripting direkt bei der Eingabe die Daten an das Script senden lassen. In dem Script kannst du sie dann zum Beispiel als Session Variablen ablegen und bei reload (= neu parsen) in das Formular schreiben lassen...

Wenn du allerdings schon vorgestern Fertig sein hättest sollen, dann ist das eher "nice to have" - wer sein Fenster aktualisiert ist selbst schuld wenn er es nochmal eingeben muss...


bye


----------



## redlama (15. Oktober 2004)

Schau mal unter www.ostsee.de 
-> Veranstaltungen - Veranstaltungsdatenbank - Informieren.
Wenn Du da was einträgst (bitte ohne abzuschicken) und dann F5 drückst, bleibt (zumindest bei mir) alles drin stehen, was ich eingetragen habe.

Ich nutze übrigens auch den IE6 unter Win2k.

redlama


----------



## jantar (15. Oktober 2004)

@redlama ... das liegt an deiner laufschrift denk die aktualisiert auch und es  

mhmm naja mit den cookies habe ich mir auch schon gedacht aber noch nicht so ne lösung gefunden ... ich dachte an parameter weitergeben aber innerhalb einer form ist das nicht so einfach weil ich ja nur ein ziel angeben kann wenn ich die parameter übergebe oder ? denke dabei an den form header


----------



## Andreas Gaisbauer (15. Oktober 2004)

Hab dir schnell eine IE Lösung gebaut. Das Script speichert vor dem Reload die Values in einem Cookie und ließt dieses nach dem reload wieder aus. Die Betonung liegt auf "schnell" - es ist alles andere als Perfekt, aber als Denkanstoss ganz brauchbar denke ich...


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <style type="text/css">
      input{ width:150px; font-size:10px; font-family:arial; }
    </style>

    <script type="text/javascript">
	function tempSave(){
	  var valid  = new Date();
      var tenSec = valid.getTime()+(10 * 1000); //Verfallsdauer des Cookies auf 10 Sekunden setzten
				   valid.setTime(tenSec);
	  var cookie = '';
	  
	  /* Alle Felder Zwischenspeichern */
	  cookie += 'tx1='+document.test.tx1.value+'#';
	  cookie += 'tx2='+document.test.tx2.value+'#';
	  cookie += 'tx3='+document.test.tx3.value+'#';
	  cookie += (document.test.ch1.checked)?'ch1=1':'ch1=0';
	  
      document.cookie = cookie+"; expires="+valid.toGMTString();
	  return true;
	}
	
	
	function loadValues(){
	  if(document.cookie){
	    var val = document.cookie;
		var elems = val.split('#');
		for(var x=0; x<elems.length; x++){
		  var val2 = elems[x].split('=');
		  var doc = document.getElementById(val2[0]);
		  alert("setze "+val2[0]+" --> "+val2[1]); //Diese Zeile Löschen - nur zur Veranschaulichung
		  if(doc.type=='text'){
			doc.value=val2[1];
		  }
		  if(doc.type=='checkbox'){
		    doc.checked = (val2[1]==1)?true:false;
		  }
		}
	  }
	}
    </script>
  </head>
  <body onload="loadValues()" onbeforeunload="tempSave()">
  
  <form name="test">
    <input type="text" id="tx1" name="tx1"/></br>
    <input type="text" id="tx2" name="tx2"/></br>
    <input type="text" id="tx3" name="tx3"/></br>
    <input type="checkbox" id="ch1" name="ch1"/>
  </form>
  </body>
</html>
```

ciao


----------



## jantar (15. Oktober 2004)

Hallo Andreas


habe vielen Dank für deine Tipps. Auch dieser funktioniert wunderbar. 


Christoph


----------

