JavaScript Problem bei Übergabe an HTML-Form

orbit

Ensign
Registriert
Dez. 2004
Beiträge
253
Hallo,

zum üben hab ich mir eine kleine Seite gebaut bei der ich Serien und Filme verwalten kann. Zum eingeben neuer Serien benutze ich ein HTML Formular. Zum editieren ist neben jedem Eintrag ein Edit-Button der den Namen etc. per JavaScript wieder an das Formular schickt um es dann zu ändern. Klappt soweit auch alles aber habe ein Problem wenn z.B. im Namen oder bei den Kommentaren ein Leerzeichen auftaucht oder Zeilenumbruch.

Hier mal das Formular:
Code:
<form action="serien.php" method="get"">
<table border="0" cellpadding="0" cellspacing="0"">
<tr><td>Name:</td><td><input type="text" size="30" name="name" id="Name" value="" /></td></tr>
<tr><td>Staffel:</td><td> <input type="text" size="3" name="staffel" id="Staffel"></td></tr>
<tr><td>Episode:</td><td> <input type="text" size="3" name="episode" id="Episode"></td></tr>
<tr><td>Kommentar:</td><td> <textarea type="text" cols="30" rows="3" name="kommentar" id="Kommentar" /></textarea></td></tr>
<tr><td></td><td><input type="submit" border="0" value="klick"></td></tr>
</table>
</form>

Und hier die JavaScript Funktion:
Code:
function setForm(name,staffel,episode,kommentar){
	document.getElementById("Name").value=name;
	document.getElementById("Staffel").value=staffel;
	document.getElementById("Episode").value=episode;
	document.getElementById("Kommentar").value=kommentar;
}

Über ein onclick wird die Funktion dann aufgerufen. Wenn ein Leerzeichen dabei ist, passiert gar nichts. Ansonsten klappt es.

Thx schonmal für Hilfe.
 
Zuletzt bearbeitet:
Schreibe mal bitte sowas:
<input type="text" size="30" name="name" id="Name" value="" />

Dein Input hat leider auch kein schließendes Tag (das /).
Hast Du schon mal über CSS nachgedacht? Dann könntest Du statt size="30" style="width: 30px;" verwenden.

Gruß
 
Bei dem Problem weiß ich momentan noch nicht sorecht, woran es liegen könnte, jedoch würde ich pauschal schon mal empfehlen in HTML-Tags die zugeordneten Werte stets in Anführungszeichen zu setzen. Es schadet auch nicht, bei Formularen den inputs sowohl die gleiche ID als auch den gleichen Namen zu geben (Groß- und Kleinschreibung beachten).

Ein schließendes Tag für inputs wird meine ich nur bei XML zur Pflicht.
 
Kommt auf den Doctype an den er verwendet.
 
Hab das Formular oben mal editiert. Wenn ich in die Funktion ein alert einbaue, wird es auch nicht aufgerufen wenn Leerzeichen vorkommen. Er springt also gar nicht in die Funktion rein. Ohne Leerzeichen kein Problem.
 
Hi,

scheint mir auch recht klar zu sein warum. Wieso übergibst du der Methode "name" usw, wenn du drin dann ein "getByID" machst? Und was genau soll die Methode eigentlich machen?

Lass die Übergabeparameter doch mal raus. Klar dass das nicht geht, wenn da dann ein Leerzeichen drin ist - dann stehen da für Javascript zwei Parameter ohne Komma getrennt, das ist ein Fehler!

Aber erkläre erstmal was die Methode eigentlich machen soll. Willst du den Feldern was zuweisen? Und woher kommen die Parameter dann genau? Erkläre mal den Ablauf. Aber so ist es vollkommen klar dass es auf die Nase fliegt.

VG,
Mad
 
Beim anlegen von Einträgen werden die Daten in eine MySql Datenbank geschrieben und mit einer Schleife auf der Seite in einer Tabelle ausgegeben. Zum editieren wird folgendes aufgerufen:
Code:
echo "<td><a onclick=setForm(\"$row->name\",$row->staffel,$row->episode,\"$row->kommentar\")><img src='images/edit.png'></a></td>";
damit neben jedem Eintrag ein Button zum editieren ist.
Falls ich was editieren möchte, sollen die Daten wieder an das Formular geschickt werden damit ich diese dort ändern kann.
Deshalb habe ich versucht die Daten per JavaScript wieder zum Formular zu bekommen.
 
Ich denke schon das das passen könnte,
jedoch machst Du ein form submit, das führt ja mit Nichten eine JS-Funktion aus sondern ein Page-Reload an den Server.


Also, entweder mit JS die Felder (woher auch immer die Werte kommen) füllen oder das ganze serverseitig machen (dann passt das form submit wieder).
 
Hi,

Also, entweder mit JS die Felder (woher auch immer die Werte kommen) füllen oder das ganze serverseitig machen (dann passt das form submit wieder).

Grundsätzlich genau so - nur glaube ich es ist eben nicht egal woher die Werte kommen ;) Je nach Formatierung geht das in die Hose denke ich.

Es wäre schlicht sauberer, wenn es serverseitig gelöst ist.

VG,
Mad
 
Gretzki schrieb:
Ich denke schon das das passen könnte,
jedoch machst Du ein form submit, das führt ja mit Nichten eine JS-Funktion aus sondern ein Page-Reload an den Server.


Also, entweder mit JS die Felder (woher auch immer die Werte kommen) füllen oder das ganze serverseitig machen (dann passt das form submit wieder).

Die Funktion wird ja nur aufgerufen um die Daten in das Formular zu bekommen, beim anlegen und editieren wird ja wieder das submit benutzt.
Ergänzung ()

Leerzeichen funktionieren jetzt, hatte die Anführungszeichen beim onclick vergessen :(

Hat noch jemand eine Idee was ich bei Zeilenumbrüchen in den Kommentaren machen kann?
Wenn ich den HMTL Code in PHP so erzeuge
Code:
echo "<td><a onclick=\"setForm('$row->name',$row->staffel,$row->episode,'$row->kommentar')\"><img src='images/edit.png'></a></td>";
steht später im Quellcode z.b.
Code:
... onclick="setForm('Serie1',1,12,'kom men tar')" ...
Das funktioniert jetzt auch alles. Wenn ich im Kommentarfeld aber einen Zeilenumbruch mache, steht im Quelltext der Umbruch natürlich auch z.b.
Code:
... onclick="setForm('Serie1',1,12,'kom 
men tar')" ...
Dann wird natürlich auch die Funktion nicht aufgerufen. Kann man das verhindern?
 
Zuletzt bearbeitet:
Das hängt vermutlich mit Escapesequenzen à la \n, \r & \r\n zusammen. Da würde ich vielleicht mal ein wenig eine große Suchmaschine bemühen. Die Suche: "javascript textfeld zeilenumbruch" liefert ein paar Ergebnisse.
 
Zurück
Oben