Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Senden-Butten prüfen
Frage
Hallo ihr,
brauchte mal Hilfe.
Bei uns auf der Homepage ist es öfter vorgekommen, dass User ein Formular ausfüllen dann aber über einen Link weiterblättern ohne den Senden-Butten zu drücken.
Kann ich beim Klicken auf den Link mit JavaScript prüfen ob vorher der Senden-Button gedrückt wurde?
Vielleicht abhängig davon ob überhaupt etwas ausgefüllt wurde?
Schon mal vielen Dank
Antwort 1 von rfb
basierend auf dem Formular-Beispiel in SelfHTML habe ich mal so eine Spielerei zusammengebastelt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Buttons ...</title>
<script type="text/javascript">
<!--
var absenden=false;
function pruefe() {
if (absenden==true) return confirm("Wollen Sie diese Seite wirklich verlassen ohne das Formular zu senden?")
}
function schicken() {
absenden=false;
return true;
}
function aendern() {
absenden=true;
}
//-->
</script>
</head>
<body>
<h1>Das hier können Sie absenden!</h1>
<p>...</p>
<form action="http://de.selfhtml.org/cgi-bin/comments.pl" target="_blank" onsubmit="schicken()">
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">
<tr>
<td align="right">Vorname:</td>
<td><input name="Vorname" type="text" size="30" maxlength="30" onchange="aendern()"></td>
</tr><tr>
<td align="right">Zuname:</td>
<td><input name="Zuname" type="text" size="30" maxlength="40" onchange="aendern()"></td>
</tr><tr>
<td align="right" valign="top">Kommentar:</td>
<td><textarea name="Text" rows="10" cols="50" onchange="aendern()"></textarea></td>
</tr><tr>
<td align="right">Formular:</td>
<td>
<input type="submit" value=" Absenden ">
<input type="reset" value=" Abbrechen">
</td>
</tr>
</table>
</form>
<p><a href="sonstwo.html" onclick="return pruefe()">nur weg hier</a></p>
</body>
</html> Antwort 2 von rfb
besser ist pruefe() aber so:
(von return bis true alles in eine Zeile.)
So wird in jedem Fall ein return zurückgegeben, das im Link verarbeitet wird.
function pruefe() {
return (absenden==true) ? confirm("Wollen Sie diese Seite wirklich verlassen ohne das Formular zu senden?") : true;
}
(von return bis true alles in eine Zeile.)
So wird in jedem Fall ein return zurückgegeben, das im Link verarbeitet wird.
Antwort 3 von spaceman
Vielen Dank für die schnelle Hilfe. Werde alles gleich mal ausprobieren.
Tschüss bis zur nächsten Frage.
Tschüss bis zur nächsten Frage.

