Formularabfrage; zwei Bedingungen
Mario
- javascript
Hallo, ich möchte ein Formular prüfen, ob das Textfeld leer ist, und ob die eMail-Adresse vorhanden/korrekt ist. Bis jetzt habe ich das in zwei Funktionen, die ich über den gleichen Event-Handler starte. Bis jetzt ist der Fehler, dass wenn Text im Textfeld steht, eine fehlerhafte eMail-Adresse ignoriert wird, und trotzdem gesendet wird. Ich sollen aber erst beide Bedingungen erfüllt sein müssen, damit das Senden klappt. Ich finde nicht raus, wo der Fehler steckt.
MfG,
Mario
<script type="text/javascript">
function pruefen() {
var feld=window.document.Formular.Nachricht;
if(feld.value=="" || feld.value==feld.defaultValue) {
return false; }
}
</script>
<script type="text/javascript">
function checkEmail(Absender) {
var rx = /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/;
var part = Absender.value.match(rx);
var info = '';
if(part) info += '<'+part[1]+'@'+part[2]+'>';
else { info += '| Bitte prüfen Ihre eMail-Adresse.'; Absender.focus(); }
document.getElementById('checkEmail').innerHTML = info;
}
</script>
<form name="Formular" action=/cgi-bin/formmail method=post>
<input type=hidden name=email value="xx@xx.com"></input>
<input type=hidden name=url value="#"></input>
eMail *
<input type="text" name="Absender" id="input1" />
<textarea name="Nachricht" id="textfeld"></textarea>
<input type="submit" id="button1" value="Senden" onClick="checkEmail(this.form.Absender);return pruefen();"></input>|
<input type="reset" id="button2" value="Eintragungen löschen"></input><br/><br/>
</form>
<span id="checkEmail">| * erforderliche Angaben</span>
Erstelle eine Funktion "pruefeformular" die weitere Funktionen "pruefetextfeld", "pruefeemail" usw aufruft.
Innerhalb dieser Funktion wird eine Fehlervariable oder besser ein Fehlerarray befüllt
Ist das Array leer wird das Formular, ist das Array befüllt werden seine einzelnen Werte ausgegeben.
Dein regulärer Ausdruck zum Testen von E-Mail-Adressen ist übrigens "kreativ".
<form name="Formular" action=/cgi-bin/formmail method=post>
Die Funktionen zum testen gehören in den onsubmit Handler des Formulars. Und Verknüpfen musst du die mit einer und-Verknüpfung.
[code lang=html]onsubmit=" return checkEmail(this.Absender) && pruefen();"
Struppi.
Danke, ich werd mal schauen, was sich machen lässt..
MfG
Mario