Textfeld nach dem absenden löschen
Marko
- javascript
0 Jakob Schneider0 Marko
0 Robert Bamler0 Marko
Hallo
Ich hab schon im Archiv einen Beitrag dazu gefunden jedoch funktioniert das nicht so ganz.
ich habe folgende Funktion
function textclear()
{
document.Formularchat.submit();
document.Formularchat.chattext.value ="";
document.Formularchat.chattext.focus();
}
Eigentlich sollte nun die Formulardaten abgeschickt werden , danach das Textfeld "chattext" gelöscht werden und es soll den Focus erhalten.
Es wird aber nicht immer ein Text abgeschickt bzw der Inhalt des Textfeldes wird gelöscht bevor die Daten abgeschickt werden.
Nur ca jeder 5. Versuch klappt so wie es eigentlich sein soll.
Dann habe ich es mit SetTimeout probiert und das löschen und fokusieren 1 Sekunde nach dem abschicken ausführen lassen.
Das klappt jedesmal, jedoch gibt es hier auch wieder einen Fehler - ab und an wird der Inhalt des Textfeldes 2mal gesendet, also beim abschicken und 1 Sekunde später nochmal, warum ?
function textclear()
{
document.Formularchat.submit();
window.settimeout("textclear2()",1000);
}
function textclear2()
{
document.Formularchat.chattext.value ="";
document.Formularchat.chattext.focus();
}
Hat wer eine Lösung für mein Problem ?
Moin,
Was genau willst du mit dem Löschen bezwecken? Bringt es sonst Nachteile?
Vielleicht können wir Dir so weiterhelfen..
LG Jakob
Der Text im Textfeld wird beim absenden an eine andere Seite übermittelt welche per iframe angezeigt wird.
Stell dir doch einfach einen normalen html Chat vor , genau so sieht meine Seite auch aus , jedoch noch sehr primitiv und auch noch nicht online.
Sobald ich also den Text per Submit Button oder Enter im Textfeld abschicke erscheint dieser auf der Seite im iframe und damit man beim weiteren eingeben von Text nicht den alten löschen muss möchte ich das das Textfeld nach dem absenden gelöscht wird , denn die Hauptseite wird ja nicht bei jedem abschicken aktualisiert sondern nur die Seite im iframe.
Hallo Marko,
Dann habe ich es mit SetTimeout probiert und das löschen und fokusieren 1 Sekunde nach dem abschicken ausführen lassen.
Das finde ich nicht sehr elegant, weil du dir nicht sicher sein kannst, ob das Formular nach dieser Sekunde wirklich abgeschickt ist. Wenn der Benutzer beispielsweise die Internetverbindung getrennt hat, um das Formular "offline" auszufüllen, spring nach dem Klick auf den "Absenden"-Button erst einmal ein Fenster zum Einwählen auf (bei Modem oder ISDN). Und das dauert einige Sekunden.
Zu deinem Problem: Normalerweise verschwindet das Formular doch sowieso, sobald es abgeschickt wird, weil dann eine neue Seite geöffnet wird. Weil dann das Löschen des Formularfeldinhalts sinnlos wäre, gehe ich davon aus, dass das in deinem Fall nicht so ist, weil
a) Das CGI-Script, das durch das Absenden des Formulars gestartet, wird keine Seite zurücksendet, sondern den HTTP-Statuscode 204.
b) Die Formularergebnisseite in einem anderen Frame geladen wird.
c) anderer Grund, auf den ich gerade nicht komme
Viel Erfolg,
Robert
b) Die Formularergebnisseite in einem anderen Frame geladen wird.
- Dann kannst du ja einfach in die Datei, die nach dem Absenden des Formulars im anderen Frame erscheint, ein JavaScript schreiben, das über "parent.framename.formularname.formularfeldname.value = '';" den Inhalt des Formularfelds löscht.
ja genau so ist es , jedoch ist es ein iframe , also ein Frame welches von einer anderes Seite umschlossen ist.
den Names des iframes habe ich , aber welcher Name besitz das Haupfenster ? denn ich habe ja kein frameset definiert , gibt es defaultnamen oder sollte ich besser ein Frameset anlegen ?
Hallo Marko,
den Names des iframes habe ich , aber welcher Name besitz das Haupfenster ?
Auf das Hauptfenster kannst du aus dem Iframe einfach mit "parent" zugreifen.
Kleiner Test:
datei1.htm:
<html>
<head>
</head>
<body>
<iframe name="framename" src="test.htm"></iframe>
<form name="form1" action="test.htm" target="framename" method="get">
<input name="eingabe" />
<input type="submit" />
</form>
</body>
</html>
test.htm:
<html>
<head>
<script type="text/javascript">
<!--
parent.document.form1.eingabe.value="";
document.write(location.search);
//-->
</script>
</script>
</head>
<body>
</body>
</html>
Viel Erfolg,
Robert