Feld überprüfen!

  • Themenstarter Themenstarter Blümchen
  • Beginndatum Beginndatum
B

Blümchen

Hallo,

hmm mal eine Frage. Ich möchte ein Feld überprüfen pb da was drin steht. Das habe ich immer gedacht, dass ich das so machen muss:

Code:
<script type="text/javascript">
function chkFormular () {
  if (document.Formular.mailto.value == "") {
    alert("Bitte Die E-Mail-Adresse fehlt!!");
    document.Formular.mailto.focus();
    return false;
  }
  if (document.Formular.message.value == "") {
    alert("Die Nachricht fehlt!");
    document.Formular.message.focus();
    return false
}
</script>

So dann habe ich das Feld:

Code:
<th scope="col"><form name="form2" method="post" action="sendpic.php" onSubmit="return chkFormular()">
    <table width="100%" align="left" cellpadding="0" cellspacing="0">
      <tbody>
        <tr> </tr>
      </tbody>
      <tbody>
        <tr>
          <td colspan="2" height="12"><img src="../img/navigation/info.jpg" height="12" width="128"></td>
        </tr>
      </tbody>
      <tbody>
        <tr>
          <td width="1" background="../img/navigation/pixel.jpg" bgcolor="#A00608"><img src="../img/navigation/fake.gif" height="1" width="1"></td>
          <td width="301" valign="top">
            <table width="100%" height="10" border="0" cellpadding="4" cellspacing="2">
              <tbody>
                <tr>
                  <td width="31%"><p><strong>Empf&auml;nger</strong>:</p></td>
                  <td width="38%"><input name="mailto" id="kommentar22" size="25" class="chatfields" type="text"></td>
                  <td width="31%"><input name="sendmail" type="submit" class="chatfields" id="go23" value="Mail">
                    <input name="bildid" type="hidden" id="bildid" value="<?php echo $idx_bild; ?>"></td>
                </tr>
                <tr valign="middle">
                  <td height="33">
                    <p><strong>Nachricht:</strong></p></td>
                  <td height="33" colspan="2"><textarea name="message" cols="37" rows="6" wrap="VIRTUAL" class="chatfields" id="textarea2"></textarea></td>
                </tr>
              </tbody>
          </table></td>
          <td width="4">&nbsp;</td>
        </tr>
        <tr>
          <td colspan="2" background="../img/navigation/pixel.jpg" bgcolor="#A00608" height="1"><img src="../img/navigation/fake.gif" height="1" width="1"></td>
        </tr>
      </tbody>
    </table>
  </form></th>

So an was kann das liegen, dass er das nicht überprüft?

Gruß Blümchen
 
Dein Formular heißt "form2", im Script steht aber "Formular", außerdem fehlt die schließende Klammer der Funktion und du returnst nie true. Habe noch die E-Mail prüfung mit einem regulären Ausdruck eingebaut.
HTML:
function chkFormular () {
    	var frm = document.form2;
 	if ( !frm.mailto.value.match(/^[a-z]+([-+._][a-z0-9]+)*@[a-z0-9]+([-_.][a-z0-9]+)*\.[a-z]{2,6}$/i) ) {
    		alert("Bitte Die E-Mail-Adresse fehlt!!");
    		frm.mailto.focus();
    		return false;
    	}
    	if ( !document.form2.message.value ) {
    		alert("Die Nachricht fehlt!");
    		document.form2.message.focus();
    		return false
    	}
    	return true;
    }
Besonders bei vielen Formularelement empfiehlt es sich übrigens die Prüfung in eine Schleife zu nehmen. Am Ende dieses Threads siehst du eine Datei mit einem Beispiel dafür.
 
Zuletzt bearbeitet:
Hi,

ich würde sagen, dein Fehler liegt darin, dass du versuchst über

Code:
 if (document.Formular.mailto.value == "")

bzw.

 if (document.Formular.message.value == "")

auf deine Elemente zuzugreifen, dein Formular aber den namen "form2" hat.

Grüße
 
Hallo,

ah dann muss ich da wo Formular eben form2 geben oder eben das form2 auf Formular ändern.

Danke für die Info!

Gruß Blümchen
 
Hallo,

@con-f-use,

hmm mal eine Frage. Ich habe mir gerade mal deinen Code angesehen und habe da folgendes gesehen:

Code:
match(/^[a-z]+([-+._][a-z0-9]+)*@[a-z0-9]+([-_.][a-z0-9]+)*\.[a-z]{2,6}$/i
hmm das kommt aber nicht von mir das hast du ja neu hinzugefügt. Kannst du mir mal sagen was das ist? Denn das habe ich auch bei Selfhtml nicht gesehen.

Gruß Blümchen
 
Jo, hab ich neu dazu geschrieben. Damit lässt sich einfach besser prüfen, ob ein String wirklich eine E-Mail-Addresse ist.

match() ist eine Methode des String-Objekts, die Prüft, ob eine Zeichenkette oder in einer anderen vorkommt bzw. ob ein regulärer Ausdruck auf eine Zeichenkette passt. Letztes wird mit meine Code gemacht. Diese kryptischen zeichen sind ein sog. regulärer Ausdrück - sehr praktisch die Dinger.

In E-Mail-Addressen müssen mit einem Buchstaben anfangen, sie dürfen nur aus Zahlen, Buchstaben und den Sonderzeichen Plus, Minus, Punkt, Bindestrich und Unterstriche bestehen, wobei keine zwei Sonderzeichen nacheinander kommen dürfen, es muss ein "@" mindestens an zweiter Stelle stehen, die Adresse muss auf ".de" oder ".at" oder ".musem" usw. enden. Gibt noch mehr Bedingugen, aber das reicht erstmal für einen regulären Ausdruck.

Code:
/^[a-z]+([-+._][a-z0-9]+)*@[a-z0-9]+([-_.][a-z0-9]+)*\.[a-z]{2,6}$/i
Dieser Ausdruck prüft, ob am Anfang ("^" steht für Anfang) mindestens ein Buchstabe steht ([a-z]+) - das Plus steht für ein oder mehrere - gefolgt von genau einem "-", "+", "." oder "_" ([-+._]) und mindestens einem Buchstaben oder einer Zahl ([a-z0-9]+) und das beliebig oft, bis ein "@" kommt. Den Rest kannst du dir denken bis zum \.[a-z]{2,6}$. Das heißt, dass am Ende (dafür steht das "$") nach einem Punkt (dafür das "\.") 2-6 Buchstaben kommen müssen. Die sind für das namesküzel, das zwischen zwei (.de, .uk, .at usw.) und sechs Zeichen ( .museum) lang ist.
 
Zuletzt bearbeitet:
Hallo,

ah das wusste ich noch nicht. Man lernt ja immer wieder dazu :-) Du da habe ich mal eine Frage.

Währe es denn möglich, dass der ganze JavaScript Code in eine Externe Datei kommt und dass man dann immer wieder die Funktion aufruft? Währe das denn möglich? Wenn ja wie müsste das dann bei dem oben genannten Problem aussehen?

Gruß Blümchen
 
Also mal angenommen, du packst den Code in die Datei "bla.js", dann kannst du ihn so in einer andere datei einbinden:
HTML:
<script type="text/javascript" src="http://www.beispiel.de/blaVerzeichnis/bla.js"></script>
Die Funktion kannst du dann ganz normal innerhalb eines JavaScript-Bereichs mit chkFormular() aufrufen.
 
Zuletzt bearbeitet:
Hallo,

ah danke hab das nun auch mal so gemacht, denn ich finde, dass das dann viel leichter zu finden ist und so.

Gruß Blümchen
 

Neue Beiträge

Zurück