3.9k Aufrufe
Gefragt in Webseiten HTML von
Hey,

Steh grad vor einem Problem

1. Ich habe wenig Ahnung!

2.

<form name="kontaktform1" action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" onSubmit="return chkFormular()">

steh zu anfang in meinem Formular. Ich möchte aber gern noch eine checkbox prüfung haben. (für AGB´s) somit wollte ich

<form action="blubber" method="post" onSubmit="return checkBoxes();">

einbauen. (http://www.wer-weiss-was.de/theme35/article320823.html)

Ich erreiche es immer nur so das ich entweder die checkbox prüfen kann oder eingabefeld text.

hier noch den code der gesamten Seite.

http://www.frankeundebert.de/kontaktformular/test.php

weiß jemand rat?

14 Antworten

0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Bau den JavaScript-Code zur Überprüfung der Checkbox direkt in die Funktion chkFormular() ein - Problem gelöst.
0 Punkte
Beantwortet von
sorry,

versteh ich nicht... kann mir jemand helfen?
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Wenn es dir nur um die eine Checkbox "AGB" geht, füge einfach den folgenden Code am Ende der Funktion chkFormular() ein (vor der letzten schließenden }

if( !document.kontaktform1.AGB.checked )
{
alert("Bitte bestätigen Sie, daß sie die AGB gelesen haben.");
document.kontaktform1.AGB.focus();
return false;
}
0 Punkte
Beantwortet von
super danke läuft....

noch ne andere sache...

if(document.kontaktform1.EMail.value == "")
{
alert("Bitte geben Sie Ihren E-Mail Adresse ein!");
document.kontaktform1.EMail.focus();
return false;
}

Überprüft leider nicht ob das wirklich ne Mail Adresse ist.
Jemand ne Idee?
0 Punkte
Beantwortet von
lass das einfach per HTML5 den Browser selbst erledigen: HTML5 input type=email
0 Punkte
Beantwortet von Experte (3.2k Punkte)
Mal nach Javascript Regex Email googeln...

var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(document.kontaktform1.EMail.value))
{
alert("Bitte geben Sie Ihren E-Mail Adresse ein!");
document.kontaktform1.EMail.focus();
return false;
}

Hier ein Beispiel.
Habs nich getestet, sollte aber so ungefähr funktionieren.

Übrigens: Nicht ausschließlich auf eine JS-Prüfung der Daten verlassen. Immer auch aufm Server schauen, ob die Daten korrekt sind, da viele Leute Javascript deaktiviert haben.

Ele
0 Punkte
Beantwortet von
@Elefunty: der Filter lässt einen Haufen valider Mailadressen nicht durch (allein schon Umlaut-Domains) und ist daher unbrauchbar.
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
@gast_42: du hast prinzipiell vermutlich recht, allerdings ist mir bisher noch keine einzige eMail-Adresse von einer Umlautdomain untergekommen (und ich betreue als SysAdmin eine Community mit über 600000 Mitgliedern vor allem aus dem deutschen Sprachraum). Das Problem ist daher wohl vorerst mal rein akademisch.

Für die "Schnellprüfung" per JavaScript reicht im Grunde schon aus zu testen, ob die eingegebene Adresse dem Format name@domain.tld genügt, und eine genauere Prüfung (inkl. Prüfung ob die Domain überhaupt gültig ist) dann auf den Server zu verlagern.

Inzwischen haben ja sogar die meisten AOL-User schon mitbekommen, daß eine eMail-Adresse ohne Domain-Teil unvollständig ist. Ein beliebter Fehler ist allerdings, die eMail-Adresse mit www. beginnen zu lassen, also z.B. www.mustermann@example.com.
0 Punkte
Beantwortet von
Umlautdomains sind auch nur ein Beispiel, wo der Code versagt. Mehr als testen auf <irgendwelche zeichen>@<irgendwelche zeichen>.<irgendwelche zeichen> hat kaum Sinn. Und das macht input type=email ohne irgendwelches JavaScript. Letztlich ist das aber auch egal, denn darüber, ob die eingegebene Adresse existiert, lässt das alles keine Rückschlüsse zu. Insofern ist die Prüfung auf leer oder nicht leer letztlich vollkommen ausreichend.
0 Punkte
Beantwortet von
einen Artikel mit umfassender Linksammlung zu Diskussionen und Scripten mit bis zu mehreren KB(!) Länge (und selbst da wird bezweifelt, dass es alle gültigen Mailadressen erkennt) findest du auf SelfHTML
...