Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Javascript mit Formularüberprüfung funktioniert nicht!
Frage
Hallo,
so, nun habe ichmein erstes Javascript geschrieben. Ich habe es so ziemlich von SelfHTML abgeschrieben, und auf meine Bedürfnisse umgeschrieben.
Ich überprüfe mit Javascript nur, ob die Felder ausgefüllt sind und ob in der E-Mail ein "@" - Zeichen vorhanden ist.
Aber wenn ich das Formular teste, rührt sich Javascript überhaupt nicht.
Unten im Browser wird mir ein Fehler auf dieser Seite angezeigt.
Hier schreibt er, dass bei Zeile 16 bei Zeichen 10 ein ";" vermisst wird. Aber da gehört keins hin.
Wisst ihr evtl. wo der Fehler im Script ist?
Würd mich über ne Antwort freuen.
Gruß
Struggle
[b]Hier das Script:[/b]
<?php
if (!empty($_POST[´email´])) {
$mailbody = $_POST[´Name´] . " schrieb\n\n";
$mailbody .= $_POST[´botschaft´];
$mailbody = stripslashes($mailbody);
$email = $_POST[´email´];
if (@mail("kontakt@meine-homepage.de", "Feedback", $mailbody, "From: $email")) {
header("Location: http://www.meine-homepage.de/danke.htm");
}
else {
echo "<p>Leider gab es einen Sendefehler!</p>\n";
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Kontaktformular</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript">
funktion chkFormular()
{
if(document.Kontakt.Name.value == "") {
alert("Bitte geben Sie Ihren Namen ein!");
document.Kontakt.Name.focus();
return false;
}
if(document.Kontakt.email.value == "") {
alert("Bitte tragen Sie Ihre E-Mail-Adresse ein");
document.Kontakt.email.focus();
return false;
}
{
if(document.Kontakt.email.value.indexOf(´@´) == -1) {
alert("Keine gültige E-Mail-Adresse!");
document.Kontakt.email.focus();
return false;
}
{
if(document.Kontakt.botschaft.value == "") {
alert("Bitte füllen Sie das Betreff-Feld aus");
document.Kontakt.botschaft.focus();
return false;
}
}
//-->
</script>
</head>
<body>
<h2>Feedbackformular</h2>
<form name="Kontakt" action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post" onSubmit="return chkFormular()">
Name: <input type="text" name="Name" value="<?php
if (isset($_POST[´Name´])) {
echo htmlspecialchars(stripslashes($_POST[´Name´]));
}
?>" /><br />
E-Mailadresse: <input type="text" name="email" value="<?php
if (isset($_POST[´email´])) {
echo htmlspecialchars(stripslashes($_POST[´email´]));
}
?>" /><br />
Kommentar:<br />
<textarea name="botschaft" cols="50" rows="5">
<?php
if (isset($_POST[´botschaft´])) {
echo stripslashes($_POST[´botschaft´]);
}
?>
</textarea><br />
<input type="submit" value="Abschicken" name="submit"/>
</form>
</body>
</html>
Antwort 1 von rfb
function schreibt sich mit "c" und nicht mit "k", außerdem hast du einen Kommentar mit //-> geschlossen, der nie (mit <!--) geöffnet wurde und ein paar {} waren auch zuviel.
so sollte es zumindest laufen:
PS: spätestens nach dem 2ten Nervrequester schalte ich entweder JavaScript ab oder lass das versenden ganz.
so sollte es zumindest laufen:
<script type="text/javascript">
<!--
function chkFormular() {
if(document.Kontakt.Name.value == "") {
alert("Bitte geben Sie Ihren Namen ein!");
document.Kontakt.Name.focus();
return false;
}
if(document.Kontakt.email.value == "") {
alert("Bitte tragen Sie Ihre E-Mail-Adresse ein");
document.Kontakt.email.focus();
return false;
}
if(document.Kontakt.email.value.indexOf("@") == -1) {
alert("Keine gültige E-Mail-Adresse!");
document.Kontakt.email.focus();
return false;
}
if(document.Kontakt.botschaft.value == "") {
alert("Bitte füllen Sie das Betreff-Feld aus");
document.Kontakt.botschaft.focus();
return false;
}
}
//-->
</script>PS: spätestens nach dem 2ten Nervrequester schalte ich entweder JavaScript ab oder lass das versenden ganz.
Antwort 2 von Struggle
Hallo,
vielen Dank für deine Antwort.
Es hat funktioniert ^_^
(blöder schreibfehler)
Nochmals Danke
PS: ja das mit den alert-Meldungen, kann ich mir schon vorstellen. Aber ich habe es in PHP nicht geschafft, den Hinweis, direkt ins Formular einzufügen. Das ist ja nur das Formular-Grundgerüst. Drum herum kommt ja noch die eigentliche Homepage. Und da kommen die Hinweise immer ganz oben in den Browser, wo man es nicht sofort erkennen kann, was falsch ist.
Wenn ich die Fehlermeldungen ins Formular eintrage, dann bekomme ich von PHP nur Fehlermeldungen.
Kannste ja mal anschauen. Also ich habe es nicht geschaft :-(
<?php
if (isset($_POST[´submit´])) {
$fehler = false;
$fehlertext = "";
if (empty($_POST[´Name´])) {
$fehler = true;
$fehlertext .= "Der Name fehlt!<br />\n";
}
elseif (strlen($_POST[´Name´]) < 3) {
$fehler = true;
$fehlertext .= "Der Name ist zu Kurz<br>\n";
}
$muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
if (empty($_POST[´email´])) {
$fehler = true;
$fehlertext .= "Die E-Mail-Adresse fehlt!<br>\n";
}
elseif (preg_match($muster, $_POST[´email´]) == 0) {
$fehler = true;
$fehlertext .= "Die E-Mail-Adresse ist ungltig!<br />\n";
}
if (empty($_POST[´botschaft´])) {
$fehler = true;
$fehlertext .= "Das Kommentarfeld mu ausgefllt werden!<br />\n";
}
elseif (strlen($_POST[´Name´]) < 3) {
$fehler = true;
$fehlertext .= "Der Kommentar ist zu Kurz<br />\n";
}
if ($fehler) {
echo "<p>$fehlertext</p>";
}
else {
$mailbody = $_POST[´Name´] . " schrieb\n\n";
$mailbody .= $_POST[´botschaft´];
$mailbody = stripslashes($mailbody);
$email = $_POST[´email´];
if (@mail("kontakt@meine-homepage.de", "Feedback", $mailbody, "From: $email")) {
header("Location: http://www.meine-homepage.de/danke.htm");
}
else {
echo "<p>Leider gab es einen Sendefehler!</p>\n";
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Kontaktformular</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2>Feedbackformular</h2>
<form action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post">
Name: <input type="text" name="Name" value="<?php
if (isset($_POST[´Name´])) {
echo htmlspecialchars(stripslashes($_POST[´Name´]));
}
?>" /><br />
E-Mailadresse: <input type="text" name="email" value="<?php
if (isset($_POST[´email´])) {
echo htmlspecialchars(stripslashes($_POST[´email´]));
}
?>" /><br />
Kommentar:<br />
<textarea name="botschaft" cols="50" rows="5">
<?php
if (isset($_POST[´botschaft´])) {
echo stripslashes($_POST[´botschaft´]);
}
?>
</textarea><br />
<input type="submit" value="Abschicken" name="submit"/>
</form>
</body>
</html>
PPS: Wie kann ich die Javascrip-Hinweise, in ein Fenster einbauen. Also wenn mehrere Felder nicht ausgefüllt sind, sollen alle Hinweise in ein Fenster gepackt werden, nicht jedes einzeln abfragen.
Gruß
Struggle
vielen Dank für deine Antwort.
Es hat funktioniert ^_^
(blöder schreibfehler)
Nochmals Danke
PS: ja das mit den alert-Meldungen, kann ich mir schon vorstellen. Aber ich habe es in PHP nicht geschafft, den Hinweis, direkt ins Formular einzufügen. Das ist ja nur das Formular-Grundgerüst. Drum herum kommt ja noch die eigentliche Homepage. Und da kommen die Hinweise immer ganz oben in den Browser, wo man es nicht sofort erkennen kann, was falsch ist.
Wenn ich die Fehlermeldungen ins Formular eintrage, dann bekomme ich von PHP nur Fehlermeldungen.
Kannste ja mal anschauen. Also ich habe es nicht geschaft :-(
<?php
if (isset($_POST[´submit´])) {
$fehler = false;
$fehlertext = "";
if (empty($_POST[´Name´])) {
$fehler = true;
$fehlertext .= "Der Name fehlt!<br />\n";
}
elseif (strlen($_POST[´Name´]) < 3) {
$fehler = true;
$fehlertext .= "Der Name ist zu Kurz<br>\n";
}
$muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
if (empty($_POST[´email´])) {
$fehler = true;
$fehlertext .= "Die E-Mail-Adresse fehlt!<br>\n";
}
elseif (preg_match($muster, $_POST[´email´]) == 0) {
$fehler = true;
$fehlertext .= "Die E-Mail-Adresse ist ungltig!<br />\n";
}
if (empty($_POST[´botschaft´])) {
$fehler = true;
$fehlertext .= "Das Kommentarfeld mu ausgefllt werden!<br />\n";
}
elseif (strlen($_POST[´Name´]) < 3) {
$fehler = true;
$fehlertext .= "Der Kommentar ist zu Kurz<br />\n";
}
if ($fehler) {
echo "<p>$fehlertext</p>";
}
else {
$mailbody = $_POST[´Name´] . " schrieb\n\n";
$mailbody .= $_POST[´botschaft´];
$mailbody = stripslashes($mailbody);
$email = $_POST[´email´];
if (@mail("kontakt@meine-homepage.de", "Feedback", $mailbody, "From: $email")) {
header("Location: http://www.meine-homepage.de/danke.htm");
}
else {
echo "<p>Leider gab es einen Sendefehler!</p>\n";
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Kontaktformular</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2>Feedbackformular</h2>
<form action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post">
Name: <input type="text" name="Name" value="<?php
if (isset($_POST[´Name´])) {
echo htmlspecialchars(stripslashes($_POST[´Name´]));
}
?>" /><br />
E-Mailadresse: <input type="text" name="email" value="<?php
if (isset($_POST[´email´])) {
echo htmlspecialchars(stripslashes($_POST[´email´]));
}
?>" /><br />
Kommentar:<br />
<textarea name="botschaft" cols="50" rows="5">
<?php
if (isset($_POST[´botschaft´])) {
echo stripslashes($_POST[´botschaft´]);
}
?>
</textarea><br />
<input type="submit" value="Abschicken" name="submit"/>
</form>
</body>
</html>
PPS: Wie kann ich die Javascrip-Hinweise, in ein Fenster einbauen. Also wenn mehrere Felder nicht ausgefüllt sind, sollen alle Hinweise in ein Fenster gepackt werden, nicht jedes einzeln abfragen.
Gruß
Struggle
Antwort 3 von rfb
zur JS-Frage:
zu PHP: falls hier nicht zufällig ein PHP-Experte mitliest wende dich in die Gruppe PHP
<script type="text/javascript">
<!--
function chkFormular() {
var a="";
if(document.Kontakt.botschaft.value == "") {
a+="Bitte füllen Sie das Betreff-Feld aus\n");
document.Kontakt.botschaft.focus();
}
if(document.Kontakt.email.value.indexOf("@") == -1) {
a+="Keine gültige E-Mail-Adresse!\n";
document.Kontakt.email.focus();
}
if(document.Kontakt.Name.value == "") {
a+="Bitte geben Sie Ihren Namen ein!\n";
document.Kontakt.Name.focus();
}
if (a!="") {
alert(a);
return false;
}
}
//-->
</script>zu PHP: falls hier nicht zufällig ein PHP-Experte mitliest wende dich in die Gruppe PHP
Antwort 4 von Struggle
Hallo nochmal,
Also die Überprüfung funktioniert einwandfrei.
Nun habe ich noch ein Radio-Button- Feld in die Homepage mit angegeben.
Wie funktioniert denn bei Radio-Buttons die Überprüfung?
Hier der Code:
<p>Wie finden Sie meine Homepage?<br>
<input type="radio" name="bewertung" value="sehr gut">sehr gut<br>
<input type="radio" name="bewertung" value="gut">gut<br>
<input type="radio" name="bewertung" value="geht so">geht so<br>
<p><input type="submit" value="Abschicken" name="submit"/></p>
Das script ist wie das oben, nur habe ich es um ein Feld erweitert:
if(document.Kontakt.bewertung.value == "") {
a+="Bitte geben Sie eine Bewertung ab !\n";
document.bewertung.Name.focus();
}
Aber da meldet sich kein Hinweis!
Muss man das hier bei den Radio-Buttons anders formulieren?
Gruß
Struggle
Also die Überprüfung funktioniert einwandfrei.
Nun habe ich noch ein Radio-Button- Feld in die Homepage mit angegeben.
Wie funktioniert denn bei Radio-Buttons die Überprüfung?
Hier der Code:
<p>Wie finden Sie meine Homepage?<br>
<input type="radio" name="bewertung" value="sehr gut">sehr gut<br>
<input type="radio" name="bewertung" value="gut">gut<br>
<input type="radio" name="bewertung" value="geht so">geht so<br>
<p><input type="submit" value="Abschicken" name="submit"/></p>
Das script ist wie das oben, nur habe ich es um ein Feld erweitert:
if(document.Kontakt.bewertung.value == "") {
a+="Bitte geben Sie eine Bewertung ab !\n";
document.bewertung.Name.focus();
}
Aber da meldet sich kein Hinweis!
Muss man das hier bei den Radio-Buttons anders formulieren?
Gruß
Struggle
Antwort 5 von rfb
du kannst bei Radiobutton besser abfragen, ob sie gechecked sind oder nicht:
das Codeschnipselchen fragt das Array deiner Bewertungs-Radio-Button ab, ob sie gechecked sind, falls das bei keinem der Fall ist gibts die Fehlermeldung.
var werten=false;
for (var j=0; j<document.Kontakt.bewertung.length; j++) {
if (document.Kontakt..bewertung[j].checked==true) werten=true;
}
if (!werten) a+="Bitte geben Sie eine Bewertung ab !\n";das Codeschnipselchen fragt das Array deiner Bewertungs-Radio-Button ab, ob sie gechecked sind, falls das bei keinem der Fall ist gibts die Fehlermeldung.
Antwort 6 von rfb
Tippfehler, richtig ist:
if (document.Kontakt.bewertung[j].checked==true) werten=true;
mit nur einem .
if (document.Kontakt.bewertung[j].checked==true) werten=true;
mit nur einem .
Antwort 7 von Struggle
Alles klar, danke.

