Patrick: Javascript Parameterlänge beschränkt?

Hi, bisher hab ich ja noch jedes meiner Probleme selbst lösen können, hab jetzt aber eins wo ich die Ursache ganz und gar nicht verstehe.

Es geht um ein Administrationteil einer Zitatesammlung. Oben ist das Formular für die Zitate, darunter eine Liste mit allen Zitaten die in der DB schon vorhanden sind. Um nicht extre mehrere Dateien für neue zitate, zitate editieren, zitat auswählen, zitat in db speichern etc. machen zu müssen, wollte ich beim klicken auf das zu editierende Zitat einfach das Formular damit per javascript ausfüllen lassen.

die funktion ist ganz einfach:

function ChangeValues(id,author,situation,zitat)
{
   document.formzitate.id.value = id;
   document.formzitate.author.value = author;
   document.formzitate.situation.value = situation;
   document.formzitate.zitat.value = zitat;
}

und funktioniert auch, außer das zitat ist zu lang. verzeit mir wenn ich nicht genau nachforsche wieviele buchstaben es genau haben darf, dürften aber so 100- 150 sein, vielleicht auch mehr kann nicht gut schätzen.

Nun endlich meine Frage: Dürfen die Parameter nur eine bestimmte Länge haben dass die funktion aufgerufen wird? Habt ihr sonst Vorschläge wie ich das Problem lösen könnte?

danke im vorraus :)

  1. Lieber Patrick,

    document.formzitate.zitat.value = zitat;

    sieht so aus, als ob Du Dein Zitat in ein Formularfeld schreibst. Leider schreibst Du mit keiner Silbe, in welche Art von Feld Du das Zitat schreibst... Ebenso schweigst Du Dich darüber aus, ob "zitat" Zeilenumbrüche enthält, oder nicht.

    Wenn Du uns nicht mehr Infos zukommen lässt, dann können wir Dir hier nur sehr begrenzt weiterhelfen.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. hi, es handelt sich um eine textarea, in der auch zeilenumbrüche drin sind, genauso wie anführungszeichen etc.

      diese sind jedoch nicht das problem, es ist definitiv die länge des parameters, denn selbst mit anführungszeichen und zeilenumbrüchen funktioniert das ganze, solange das zitat nicht zu lang ist.

      hier mal der gesamte quellcode:
      <script language="JavaScript">
      function ChangeValues(id,author,situation,zitat)
      {
         document.zitate.id.value = id;
         document.zitate.author.value = author;
         document.zitate.situation.value = situation;
         document.zitate.zitat.value = zitat;
      }
      </script>
      <body>
      <form name="zitate" action="sendzitat.php" method="post">

      <table width="100%">
         <tr>
            <td width="1%"><label for="author">ID: </label></td>
            <td><input type="text" value="-1" name="id" size="4"></td>
         </tr>
         <tr>
            <td width="1%"><label for="author">Author: </label></td>
            <td><input type="text" name="author" id="author" size="25"></td>
         </tr>
         <tr>
            <td><label for="author">Situation: </label></td>
            <td><input type="text" name="situation" id="situation" size="25"></td>
         </tr>
         <tr>
            <td><label for="zitat">Zitat: </label></td>
            <td><textarea name="zitat" id="zitat" rows="5" cols="40"></textarea></td>
         </tr>
      </table>
      <input type="submit" value="Senden">&nbsp;<input type="reset" value="Zurücksetzen">
      </form>

      <!-- Hier zwei beispiele Aufrufbeispiele !-->
      <!-- Funktioniert !-->
      onClick="ChangeValues('2','Herr Schäfer','Unterricht','Das Schnitzel vom Schwein ist noch lange nicht das, was einem die Kraft liefert, um dem Andren eine in die Fresse zu schlagen.<br>')"

      <!-- Funktioniert nicht !-->
      onClick="ChangeValues('4','Tobias Kammerer, Herr Müller','Unterricht','Herr Müller: „Das ist Demagogie“<br>
      Tobi: „Was ist Demagogie?“<br>
      Herr Müller: „Demagogie? Puh….ich hab nie behauptet, dass ich alles verstehe was ich hier von mir gebe.“ ')"

      die beiden sind in einem <tr> tag...

      1. hi, es handelt sich um eine textarea, in der auch zeilenumbrüche drin sind, genauso wie anführungszeichen etc.

        diese sind jedoch nicht das problem,

        doch genau die sind das Problem, offensichtlich erzeugst du den String auf derm Server und dann das Schief

        <script language="JavaScript">

        Das ist übrigens seit Jahren überflüssig, das notwendige type Attribut dagegen fehlt.

        <!-- Funktioniert nicht !-->
        onClick="ChangeValues('4','Tobias Kammerer, Herr Müller','Unterricht','Herr Müller: „Das ist Demagogie“<br>
        Tobi: „Was ist Demagogie?“<br>
        Herr Müller: „Demagogie? Puh….ich hab nie behauptet, dass ich alles verstehe was ich hier von mir gebe.“ ')"

        Es sind keine Zeilenumbrüche innerhalb von Strings erlaubt, du musst die maskieren.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Eben machts klick, du hast recht. die Zeilenumbrüche warns, hätt ich wirklich drauf kommen können... danke ;)

          1. Anmerkung übrigens für jeden der den Thread mal findet mit nem ähnlichen Problem, das Ersetzen der Zeilenumbrüche in PHP ist mit

            ereg_replace("\n","\n",$text)

            nicht getan, die echten zeilenumbrüche werden hier nicht ersetzt, sondern lediglich ein \n angefügt. man muss hier

            ereg_replace("(\r\n|\n|\r)","\n",$text)

            oder mit array

            $search = array("\r\n", "\n", "\r");
            ereg_replace($search,"\n",$text)

            verwenden. \r ist das carriage return.