Supportnet / Forum / Webseiten/HTML
Formular wird zurückgesetzt anstatt abgesendet
Frage
Ich habe ein formular das mich zu einer Url weiterleitet wenn ich sie eingebe. leider funktioniert das aber nur wenn ich den button drücke und wenn ich enter drücke wird das formular zurückgesetzt wie kann ich das ändern das das mit enter auch funktioniert? Kann mir jemand helfen?
Hier der Quelltext:
<SCRIPT language=JavaScript>
function GoToURL(j) {
var URLis;
URLis = document.URLframe.Dest.value
if (URLis == "" || URLis.length <= 0)
{
j.value = "Login"
alert('\Fehler!\n\nFehler.')
}
else
{
j.value = "Verbinde..."
var location=("http://" + URLis);
this.location.href = location;
}
}
</SCRIPT>
<p> </p>
<p> </p>
<FORM name=URLframe>
<TABLE align=center border=0 width="269">
<TBODY>
<TR>
<TD vAlign=center align=middle>
<p style="margin-top: 0">
<INPUT maxLength=50
size=33 name=Dest></TD></TR>
<TR>
<TD align=middle>
<p style="margin-top: 13px">
<font color="#FFFFFF">
<INPUT onclick=GoToURL(this) type=button value="Senden" WIDTH="50"></font></p>
<p style="margin-top: 13px">
</TD></TR>
<tr>
<TD align=middle>
<p align="left"> </TD>
</tr>
</TBODY></TABLE>
</strong>
<p style="margin-top: 13px"> </p>
<STRONG>
<p> </p>
</FORM>
mfG
ibg
Antwort 1 von kicia
Hallo ibg,
ich weiß nicht, ob man das so macht, aber funktionieren sollte es so:
Das onclick im input tag raus löschen, statt dessen
und im script "return false;" einfügen:
Das this, bzw das j aus GoToURL() löschen, denn Dein j.value = "Verbinde..." wird so sowieso nicht funktionieren. Das müsstest Du dann irgendwie anders lösen.
ZB.
ich weiß nicht, ob man das so macht, aber funktionieren sollte es so:
Das onclick im input tag raus löschen, statt dessen
<FORM name=URLframe onsubmit="return GoToURL();">und im script "return false;" einfügen:
function GoToURL()
{
//...Dein Code...
return false;
}Das this, bzw das j aus GoToURL() löschen, denn Dein j.value = "Verbinde..." wird so sowieso nicht funktionieren. Das müsstest Du dann irgendwie anders lösen.
ZB.
document.getElementsByTagName("input")[1].value = "Verbinde...";Antwort 2 von rfb
zur Reaktion des Formulars auf die Enter-Taste benötigst du zwingend einen Button vom Type:
Fällt dir im Unterschied zu deinem Code etwas auf? 2 Unterschiede:
1. Kleinschreibung derTagnamen (ab XHTML zwingend erforderlich)
2. Attribute in Anführungszeichen (immer erforderlich)
Noch eine Anmerkung zum JavaScript-Teil:
die Verwendung von
Grundsatz: niemals die Namen bestehender Objekte sowie die reservierten Worte als Variablennamen nutzen!
Wie eine Überprüfung des Formulars beim Absenden sinnvoll eingebunden wird, hat kicia ja schon erwähnt. Dafür gibt es den Event onsubmit. Eigenkonstruktionen über Button mit onclick sind nicht erforderlich, zudem funktionieren diese nur mit aktiviertem JavaScript, ansonsten funktioniert das Formular damit gar nicht.
<input type="submit" value="Absenden">Fällt dir im Unterschied zu deinem Code etwas auf? 2 Unterschiede:
1. Kleinschreibung derTagnamen (ab XHTML zwingend erforderlich)
2. Attribute in Anführungszeichen (immer erforderlich)
Noch eine Anmerkung zum JavaScript-Teil:
die Verwendung von
location als Variablennamen ist denkbar unglücklich. Damit überschreibst du das location-Object, das du in der nächsten Zeile nutzen willst. Es fällt dir wahrscheinlich nicht auf, weil dein Browser das Überschreiben - vermutlich - schon als Sprungbefehl interpretiert.Grundsatz: niemals die Namen bestehender Objekte sowie die reservierten Worte als Variablennamen nutzen!
Wie eine Überprüfung des Formulars beim Absenden sinnvoll eingebunden wird, hat kicia ja schon erwähnt. Dafür gibt es den Event onsubmit. Eigenkonstruktionen über Button mit onclick sind nicht erforderlich, zudem funktionieren diese nur mit aktiviertem JavaScript, ansonsten funktioniert das Formular damit gar nicht.
Antwort 3 von ibg
Danke,
hat funktioniert.
mfg
ibg
hat funktioniert.
mfg
ibg

