Ackermann Michael: Daten aus Textfeldern in Cookies speichern

Hallo

Ich habe hier ein Script mit dem ich Daten aus Textfeldern in Cookies speichern kann.
Und zwar will ich ein Online MetaTag Generator erstellen.
Da will ich das man die eingegebenen Daten, zur weiteren Bearbeitung, speichern kann.
Und da wird es notwendig das folgenden Text zu speichern :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Hier nun das Problem :
Es ist leider nicht möglich den ; (KommaStrich) zu speichern. Gibt man bei dir beispielsweise im Feld "Text-1" dies ein :
www;www
Löscht dann die Felder - Und läd dann das Gespeicherte, erscheint im Feld "Text-1" :
www
Und im Feld "Text-2" dies :
www
Der ; (KommaStrich) bewirkt also das ein neues Feld angesprungen wird, anstatt das der komplette Text (www;www) in Textfeld-1 gespeichert wird.

Ich bräuchte aber gerade diesen ; KommaStrich in einem Textfeld, siehe zu speichernden MetaTag oben.
Hat von euch jemand eine Idee wie man dieses Problem lösen kann ?

Hier nun der Script :

<html><head><title>Daten speichern</title>

<script language="JavaScript" type="text/javascript">
<!--
var AnzTage = 365;
var Elemente = 'Text-1;Text-2';
var CookieName = 'FormularInhalt';

function Speichern()
{
  var spElem = Elemente.split(';');
  var SpeicherWert = '';

for (var i=0; i < spElem.length; i++)
    SpeicherWert += document.formular[spElem[i]].value + ';';

SpeicherWert = SpeicherWert.substring(0, SpeicherWert.length-1);
  alert ('Daten erfolgreich gespeichert!');

var expdate = new Date();
  FixCookieDate (expdate);
  expdate.setTime (expdate.getTime() + (AnzTage * 24 * 60 * 60 * 1000));

SetCookie (CookieName, SpeicherWert, expdate);}

function Laden()
{  if (GetCookie(CookieName))
{  var laElem = GetCookie(CookieName).split(';');
   var spElem = Elemente.split(';');
   for (var i=0; i < laElem.length; i++)
   if (laElem[i])
   document.formular[spElem[i]].value = laElem[i];  }}

function Loeschen()
{  var Elem = Elemente.split(';');
   for (var i=0; i < Elem.length; i++)
   document.formular[Elem[i]].value = '';}

//-->
</script>

<script language="JavaScript" type="text/javascript">
<!--
function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function FixCookieDate (date) {
  var base = new Date(0);
  var skew = base.getTime(); // dawn of (Unix) time - should be 0
  if (skew > 0)  // Except on the Mac - ahead of its time
    date.setTime (date.getTime() - skew);
}

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break;
  }
  return null;
}

function SetCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function DeleteCookie (name,path,domain) {
  if (GetCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}
//-->
</script>

</HEAD><body>

<form name="formular">
   Text-1 <input type="text" name="Text-1" size="40" maxlength="40">
        Text-2 <input type="text" name="Text-2" size="40" maxlength="40">
</form>
<a href="#" onClick="Speichern();return false;">Daten speichern</a><br><br>
<a href="#" onClick="Laden();return false;">Daten laden</a><br><br>
<a href="#" onClick="Loeschen();return false;">Formularfelder löschen</a>

</body></html>

Ich komm hier echt nicht weiter.
Könntet Ihr mir helfen ?
Danke im vorraus
Michael

  1. Hallo, Michael,

    Es ist leider nicht möglich den ; (KommaStrich) zu speichern.

    den verwendest Du ja auch als Separator innerhalb des Cookies ...

    Grüße,

    Sebastian

    1. Hallo, Michael,

      ich hab mal den Separator ausgetauscht und sicherheitshalber (für alte Browser) die Reihenfolge der Funktionen geändert. Zuerst hat es nicht geklappt, weil noch die alten Cookies gespeichert waren. Nach dem Löschen scheint es zu funktionieren. Aber teste mal besser selber ...

      Grüße, Sebastian

      ---------- schnipp ----------

      <html>
      <head>

      <title>Daten speichern</title>

      <script language="JavaScript" type="text/javascript">
      <!--
      var d = document;
      var AnzTage = 365;
      var Elemente = 'Text-1|Text-2';
      var CookieName = 'FormularInhalt';

      function getCookieVal(offset)
      {
      var endstr = d.cookie.indexOf ("|", offset);
      if (endstr == -1)
      endstr = d.cookie.length;
      return unescape(d.cookie.substring(offset, endstr));
      }

      function FixCookieDate(date)
      {
      var base = new Date(0);
      var skew = base.getTime(); // dawn of (Unix) time - should be 0
      if (skew > 0)  // Except on the Mac - ahead of its time
      date.setTime (date.getTime() - skew);
      }

      function GetCookie(name)
      {
      var arg = name + "=";
      var alen = arg.length;
      var clen = d.cookie.length;
      var i = 0;
      while (i < clen) {
      var j = i + alen;
      if (d.cookie.substring(i, j) == arg)
      return getCookieVal (j);
      i = d.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
      }
      return null;
      }

      function SetCookie(name,value,expires,path,domain,secure)
      {
      d.cookie = name + "=" + escape (value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
      }

      function DeleteCookie(name,path,domain)
      {
      if (GetCookie(name))
      {
      d.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
      }
      }

      function Speichern()
      {
      var spElem = Elemente.split('|');
      var SpeicherWert = '';
      for(var i=0;i<spElem.length;i++)
      SpeicherWert += d.formular[spElem[i]].value + '|';
      SpeicherWert = SpeicherWert.substring(0, SpeicherWert.length-1);
      alert ('Daten erfolgreich gespeichert!');
      var expdate = new Date();
      FixCookieDate (expdate);
      expdate.setTime (expdate.getTime() + (AnzTage * 24 * 60 * 60 * 1000));
      SetCookie (CookieName,SpeicherWert,expdate);
      }

      function Laden()
      {
      if (GetCookie(CookieName))
      {
      var laElem = GetCookie(CookieName).split('|');
      var spElem = Elemente.split('|');
      for(var i=0;i<laElem.length;i++)
      if (laElem[i])
      d.formular[spElem[i]].value = laElem[i];
      }
      }

      function Loeschen()
      {
      var Elem = Elemente.split('|');
      for (var i=0; i < Elem.length; i++)
      d.formular[Elem[i]].value = '';
      }

      //-->
      </script>

      </HEAD>

      <body>

      <form name="formular">
       Text-1 <input type="text" name="Text-1" size="40" maxlength="40">
      Text-2 <input type="text" name="Text-2" size="40" maxlength="40">
      </form>

      <a href="#" onClick="Speichern();return false;">Daten speichern</a>
      <br>
      <a href="#" onClick="Laden();return false;">Daten laden</a>
      <br>
      <a href="#" onClick="Loeschen();return false;">Formularfelder löschen</a>

      </body>
      </html>

      1. Jo geht, vielen Dank
        Da hätte ich ja eigentlich auch drauf kommen können.
        Manchmal sieht man halt den Wald vor lauter Bäumen nicht :-)

        Wenn ich des richtig sehe hast du nur diese Zeilen geändert, richtig ?

        var Elemente = 'Text-1|Text-2';
        var endstr = d.cookie.indexOf ("|", offset);

        Nochmals, vielen Dank.