Pflichtfelder in Javascript

kirowatti

Mitglied
Hallo!
Ich als Nichtprogrammierer habe da ein Problem mit der Abfrage von Pflichtfeldern.
Und zwar habe ich folgendes Javascript das bestens funktioniert:


<script type="text/javascript">
<!--
function checkForm(){
if(document.subscription.mail.value == ''){
alert("Bitte geben Sie eine eMail-Adresse an!");
document.subscription.mail.focus();
return false;
}else{
var x = document.subscription.mail.value
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/
if (!filter.test(x)){
alert("Bitte überprüfen Sie Ihre eMail-Adresse!");
document.subscription.mail.focus();
return false;
}else{
document.subscription.submit();
}
}
}
//-->
</script>



Nun möchte ich jedoch noch ein zweites Pflichtfeld einführen und zwar das Namensfeld. Nun weiß ich zum einen nicht, welche Scriptteile ich weglassen kann, wenn ich keine Verifizierung einer Mailadresse brauche, sondern nur wissen will, um das Feld gefüllt ist.

Und zum anderen weiß ich nicht, wie ich diese beiden Abfragen miteinander verknüpfen
kann, ohne, dass sie sich gegenseitig aufheben, denn der User soll ja sowohl Mail-Adresse als auch den Namen ausfüllen und weiter zur Dankeseite (danke.php) zu kommen.

Kann mir da vielleicht jemand helfen?

Tausend Dank schon einmal im voraus.

Gruß
kirowatti :)
 
Hallo!

Habs dir ein wenig vereinfacht, sodass du elegant weiter Felder überprüfen kannst. Hoffe es erfüllt den Sinn:

*editiert*

HTML:
<html>
<head>
<script language="javascript" type="text/javascript">
function checkForm() {

var emailValue = document.getElementById("email").value;
var nameValue = document.getElementById("name").value;

var filter  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9])+$/;

if ((emailValue == "") || (!filter.test(emailValue))) {

   alert("Bitte überprüfen Sie Ihre E-Mail-Adresse!");
   document.getElementById("email").focus();

   return false;


}

if (nameValue == "") {

   alert("Bitte geben Sie einen Namen an!");
   document.getElementById("name").focus();

   return false;
}

document.forms[0].submit();

return true;
}
</script>
</head>

<body>
<form action="" method="get" onsubmit="return checkForm();">
<input type="text" id="email" name="email" />
<input type="text" id="name" name="email" />
<input type="submit" />
</form>
</body>
</html>
 
Zuletzt bearbeitet:
Ja mit Hilfe von else if()..

Code:
   if( BEDINUGUNG1)
   {
         alert('Hinweis 1');
         return false;
   } 
   else if(BEDINGUNG2)
   {
         alert('Hinweis 1');
         return false;
   }
   else if()
       usw....
   else
   {
         document.subscription.submit();
         return true;
   }

Sobald eine der Bedinungen war wird, wird der Block mit den Anweisungen ausgeführt und anschliessend die Funktion beendet.

Alternativ könntest du dir auch eine Temporäre Variable setzen und mit false initialisieren.
Code:
    var absenden = true;
    
    if(BEDINGUNG1)
    {
         ... 
        absenden = false;
    }
    ...
 
    if(absenden)
    {
         document.subscription.submit();
    }
 
An mage:

Eine direkte Abfrage der konkreten Ereignisse im Sinne von elseif ist garnicht nötig, da die Überprüfung innerhalb der Funktion ja direkt das Ergebnis liefern soll.

Ergo: Wenn das E-Mail-Feld leer ist, reicht das return false aus weil er beim return aus der Funktion "rausspringt". D.h. die nachfolgenden Überprüfungen finden garnicht statt.

Hab meinen Quelltext nochmal komplett in eine HTML-Seite gepackt, damit man ein komplettes, funktionierendes Beispiel hat.

Hat es dein Problem gelöst kirowatti?
 
teccco hat gesagt.:
An mage:

Eine direkte Abfrage der konkreten Ereignisse im Sinne von elseif ist garnicht nötig, da die Überprüfung innerhalb der Funktion ja direkt das Ergebnis liefern soll.

Ergo: Wenn das E-Mail-Feld leer ist, reicht das return false aus weil er beim return aus der Funktion "rausspringt". D.h. die nachfolgenden Überprüfungen finden garnicht statt.

Ja, du hast recht :)
Die Beiträge haben wir fast synchron eingestellt. Als ich begonnen habe, war dein Eintrag noch nicht vorhanden.
 
Hallo!
Ich möchte in meine übliches Kontaktformular diverse Pflichtfelder einbauen und bei der Suche habe ich eine alte Anfrage von mir gefunden und gedacht, dass damit nun alles in Ordnung sein müßte, aber leider klappt es nun doch nicht so, wie ich dachte.

Und zwar funktioniert die Abfrage schon richtig, aber jedes Mal, wenn mich das Popup-Fenster darauf aufmerksam macht, dass ich meine Mailadresse eingeben soll und ich dann aud OK drücke, wird die Seite automatisch auf die PHP-Seite verlinkt, die die Mail versendent und ehe ich die Chance habe, etwas neu auszufüllen, geht die Mail schon raus. das kann ja nicht Sinn der Sache sein.
Was mache ich da falsch?

Ich verwende das Script so, wie von "teccco" angedacht, nur mit der notwendigen Änderung, dass ich in der Zeile
Code:
<form action="" method="get" onsubmit="return checkForm();">
bei action="" eben action="meine-php-seite.php" eingeb, da die Daten sonst ja nicht verschickt würden.

Kann mir da bitte jemand helfen?
Vielen Dank im voraus.

kirowatti
 
Zurück