Supportnet Computer
Planet of Tech

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:

<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

Antwort 3 von rfb

zur JS-Frage:

<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

Antwort 5 von rfb

du kannst bei Radiobutton besser abfragen, ob sie gechecked sind oder nicht:

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 .

Antwort 7 von Struggle

Alles klar, danke.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: