Javascript Check Formular

V

v4umax

Mitglied
Thread Starter
Dabei seit
07.05.2007
Beiträge
29
Reaktionspunkte
0
Hallo Leute,

Möchte gerne auf meiner Homepage ein Formular für Dateneingabe
einbinden, das wiederum durch ein Java-Script überprüft wird.
Habe folgendes htm Dokument verfasst. Die überprüfung von Ein-
gaben im Dokument funktioniert tadellos.

Zur ergänzung möchte ich nun, dass auch die Anrede "HERR/FRAU"
überprüft wird. Kann mir bitte jemand helfen? Ich weis nicht
mehr weiter!

Code:
<html>
<head><title>Formulare mit Javascript</title>

<script type="text/javascript">
function checkForm() {
  var strFehler='';
  if (document.forms[0].Name.value=="")
    strFehler += "Der Name fehlt oder hat einen Fehler!\n";
  if (document.forms[0].Telefon.value=="")
    strFehler += "Die Telefonnummer fehlt oder hat einen Fehler!\n";
  if (!validEmail(document.forms[0].Email.value)) {
    strFehler += "Die E-Mail-Adresse fehlt oder hat einen Fehler!\n";
  }
    
  if (strFehler.length>0) {
    alert("Datenfehler! Festgestellte Probleme: \n\n"+strFehler);
    return(false);
  }
}
function validEmail(email) {
  var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
  var regex = new RegExp(strReg);
  return(regex.test(email));
}
</script>
</head>

<body marginwidth="0" leftmargin="0" marginheight="0" topmargin="0" bgcolor="#787878" text="#000000">

<form action="formmail.php" method="POST" onsubmit='return checkForm()'>

<input type="hidden" name="subject" value="verteiler">
	
	<input type="hidden" name="access" value="irregeheim">
    
	B&uuml;ro
	<br>
	<input name="Buero" type="text" id="Buero" value="" size="20">
	<br>
	
	Anrede
	<br>
	<input type="radio" name="Anrede" value="Herr"> Herr
	<br>
	<input type="radio" name="Anrede" value="Frau"> Frau
	<br>						
	
	Position
	<br>
	<select name="Position">
		<option> Keine Angabe </option>
		<option> Chef(in) </option>
		<option> Inhaber(in) </option>
		<option> Gesch&auml;ftsf&uuml;rer(in) </option>
		<option> Abteilungsleiter(in) </option>
		<option> Freie(r) Mitarbeiter(in) </option>
		<option> Andere Position </option>
	</select>
	<br>
						
	Vorname
	<br>
	<input name="Vorname" type="text" id="Vorname" value="" size="20">
	<br>

	Name
	<br>
	<input name="Name" type="text" id="Name" value="" size="20">
	<br>

	Strasse
	<br>
	<input name="Strasse" type="text" id="Strasse" value="" size="20">
	<br>
	
	Ort
	<br>
	<input name="Ort" type="text" id="Ort" value="" size="20">
	<br>
	
	Telefon
	<br>
	<input name="Telefon" type="text" id="Telefon" value="" size="20">
	<br>
	
	Telefax
	<br>
	<input name="Telefax" type="text" id="Telefax" value="" size="20">
	<br>
	
	Email
	<br>
	<input name="Email" type="text" id="Email" value="" size="20">
	<br>
	
	Internet
	<br>
	<input name="Internet" type="text" id="Internet" value="" size="20">
	<br>
      
	Eingabe
	<br>
	<textarea name="Eingabe" cols="60" rows="20" wrap="PHYSICAL" id="Eingabe">
	</textarea>
	<br>
      
	<br>
	<input type="submit" value="Abschicken">

</form>

</body>
</html>
 
Der Titel ist unglücklich gewählt:

Java != Javascript

bitte beachten!!!
 
Du kannst bei einer IF-Abfrage auch auf zwei Werte vergleichen.

PHP:
if("Frau" == document.forms[0].Anrede.value xor "Herr" == document.forms[0].Anrede.value)

Die Bedingung gilt als erfüllt, wenn eine Seite vom XOR true, und die andere false ergibt.
(Schließlich kann man sich nicht gleichzeitig mit Herr und Frau anreden lassen).

Hier würde zwar auch ein simles 'OR' reichen, da beides mal dass gleiche Feld überprüft wird, aber wenn sich da mal was ändert, hat man ein Zeichen wenig, was man ersetzen muss :D
(Beim 'or' reicht es, dass eine Seite 'true' ergibt, unabhängig von der anderen).

Mfg
Lukas
 
Code:
document.forms[0].Anrede.value

Moderne Browser unterstützen meines Wissens nach alle die value-Eigenschaft von Select-Objekten. Auf der sicheren Seite ist man aber wenn man die ausgewählte Option direkt anspricht.

Code:
document.forms[0].Anrede.options[document.forms[0].Anrede.options.selectedIndex].value
 
Funktioniert leider nicht! Das Formular wird gleich abgeschickt!
Ohne jegliche prüfung! Hier mal mein neues Head script:

Code:
<script type="text/javascript">
function checkForm() {
  var strFehler='';
  if(document.forms[0].Anrede.options[document.forms[0].Anrede.options.selectedIndex].value=="")
    strFehler += "Die Anrede fehlt oder hat einen Fehler!\n";
  if (document.forms[0].Name.value=="")
    strFehler += "Der Name fehlt oder hat einen Fehler!\n";
  if (document.forms[0].Telefon.value=="")
    strFehler += "Die Telefonnummer fehlt oder hat einen Fehler!\n";
  if (!validEmail(document.forms[0].Email.value)) {
    strFehler += "Die E-Mail-Adresse fehlt oder hat einen Fehler!\n";
  }
    
  if (strFehler.length>0) {
    alert("Datenfehler! Festgestellte Probleme: \n\n"+strFehler);
    return(false);
  }
}
function validEmail(email) {
  var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
  var regex = new RegExp(strReg);
  return(regex.test(email));
}
</script>
 
Auch folgender Angaben gehen nicht ?

Code:
function checkForm() {
  var strFehler='';
  if("Frau" == document.forms[0].Anrede.value xor "Herr" == document.forms[0].Anrede.value=="")
     strFehler += "Die Anrede fehlt oder hat einen Fehler!\n";
  if (document.forms[0].Name.value=="")
    strFehler += "Der Name fehlt oder hat einen Fehler!\n";
  if (document.forms[0].Telefon.value=="")
    strFehler += "Die Telefonnummer fehlt oder hat einen Fehler!\n";
  if (!validEmail(document.forms[0].Email.value)) {
    strFehler += "Die E-Mail-Adresse fehlt oder hat einen Fehler!\n";
  }
 
Jetzt musst Du noch die Informationen aus dms's und meinem Post verbinden, und dann klappts ;)
 
Ich komm nicht auf den grünen Punkt !
Meine Fehlerkonsole meldet noch immer:
missing ) after condition.

Könnt ihr mir nicht das ganze Script einmal posten ?
Vielen lieben dank !:(
 
Leute, man prüft keine Daten, die gesendet werden im Client!
Was macht Ihr, wenn der User JavaScript ausschaltet oder einen javaScript-Fehler hat?

Valedierungen gehören auf den Server! :)
 
Leute, man prüft keine Daten, die gesendet werden im Client!
Stimmt, das wäre ja Komfort und sowas will man dem Nutzer natürlich nicht zumuten. ;)

Valedierungen gehören auf den Server! :)
Das eine schliesst das andere ja nicht aus, oder?

@v4umax Hast Du mal einen Link parat so das man sich das online anschauen kann? Ist immer die beste Variante da die meisten keine Lust haben sich den ganzen Quellcode lokal zu speichern.
 
  • Gefällt mir
Reaktionen: v4umax
Anbei der Link zum bestehenden Verteiler:
Noch immmer suche ich nach dem Problem wie ich
die Radio-Buttons "Herr" und "Frau" mittels script checken kann?
(In der Auswahl sollten Sie zunächst nicht vorselektiert sein!)
siehe http://verteiler.ccpr.de
 
Ach, radiobuttons. Hätte mir wohl mal das Markup anschauen sollen. *g* Bin irgendwie von select ausgegangen. Sorry für die Verwirrung.

Beim Fall Radiobuttons sollte die Bedingung so lauten:
Code:
if(!document.forms[0].Anrede[0].checked && !document.forms[0].Anrede[1].checked)
 
  • Gefällt mir
Reaktionen: v4umax
@dms:
Stimmt, das wäre ja Komfort und sowas will man dem Nutzer natürlich nicht zumuten.

Das spielt im Normalfall keine Rolle, ob der Server valisiert oder der Client. Das Risiko von Falscheingaben ist allerdings bei einer serverseitigen Prüfung gleich null.

@dms: Das eine schliesst das andere ja nicht aus, oder?

Stimmt, aber ist es sinvoll auf dem Client und auf dem Server zu validieren?
 
  • Gefällt mir
Reaktionen: v4umax
WOW, ES FUNKTIONIERT ! ICH BIN BEGLEISTERT !

Der Vollständigkeit halber (nur für meinen Wissenshunger)
nun noch die Frage ....
... könnte man auch ein SELECT-FELD siehe
<select name="Position"> prüfen lassen ?
 
Jep, geht ... gehe gleich mal auf die Suche wie ... :)
 
  • Gefällt mir
Reaktionen: v4umax
Das spielt im Normalfall keine Rolle, ob der Server valisiert oder der Client.

Und wie das eine Rolle spielt. Ich als Nutzer reg mich so derbe auf wenn ich mich z.B. irgendwo anmelden will und tausend mal ein Formular abschicken muss weil jedes mal was anderes nicht passt. Einmal ist mein Passwort unsicher, dann fehlt die Telefonnummer, dann muss ich die AGB akzeptieren, dann dies, dann jenes und jedes mal muss ich auch noch mein sicheres Passwort zwei mal eingeben. Da krich ich die Krise! ;)

Sowas ist einfach nur nutzerunfreundlich. Wenn man schon die Möglichkeit hat eine vorvalidierung auf Clientseite durchzuführen, dann spricht auch nichts dagegen. Dass man sich nicht auf diese Form der Validierung verlassen kann steht völlig ausser Frage.

Stimmt, aber ist es sinvoll auf dem Client und auf dem Server zu validieren?
Natürlich. Einmal um, wie oben beschrieben, den Nutzer nicht zu ärgern und unnötig Bandbreite zu verzocken und ein mal um die Daten "wirklich" zu validieren.

Darin sehe ich nun auch wirklich keine Glaubensfrage sondern das ist für mich ein Sache des guten Tons.

Was aber noch viel schlimmer ist als eine ausschliesslich(<=nachträglich eingefügt. Sonst macht das ja keinen Sinn. ;) ) Serverseitige Validierung: Falsche Validierung. Gerade mit dem richtige Validieren von eMail-Adressen scheinen die meisten Entwickler überfordert zu sein. Fast keiner der regulären Ausdrücke die man so im Netz findet deckt die Spezifikationen des entsprechenden RFC ab. Was ist mit ich@66.249.93.104? was ist mit ich@meine-domain.museum? Aus genau so einem Grund konnte ich mich einst nicht bei 1&1 anmelden. :cake:

@v4umax Das mit dem Select-Feld habe ich oben ja schon fälschlicherweise geschrieben. Entweder wie bei einem normalen input über value oder über selectedIndex um auch ältere Browser abzudecken. Oder falls Du den Inhalt nicht kennst oder nicht explizit prüfen willst kannst Du z.B. auch sowas machen:

Code:
if(SELECT.options.selectedIndex==0)
 
Zuletzt bearbeitet von einem Moderator:
MAL NOCH WAS SCHNELL:
Könnt ihr mir noch kurz das Script geben das für einen
einzelnen Radio Button namens: "Datenschutz" gilt ?
siehe auch aktualisierte Seite: http://verteiler.ccpr.de

@dms
Ja, deiner Aussage das es dich nerft stimme ich zu!
Leider gibt es gerade in Deutschland immer mehr Gesetzte,
die dies und das Vorschreiben! ZU DOOF....
Und nun will mein Chef:
A) Die wichtigsten Daten eingegegeben haben
so dass er sich später Rückversichern kann.
B) Die Zustimmung das alles korrekt nach BND läuft.

Oweia, ich wär froh, wenn ein nur ein einfaches ...
Klick -- ICH WILL SPAM -- wäre!
 
@v4umax: Da Du Deine PN's offenbar nicht liest:

wenn Du den roten Button neben einem Beitrag anclickst schreibst Du KEINE PN an den Autor des Postings! Du meldest den Beitrag stattdessen bei den Mods!

Deine Beiträge landen also nicht da wo Du glaubst! Du würdest mir einen Gefallen tun, wenn Du aufhörst dadurch harmlose Beiträge zu melden und den Usern würdest Du helfen wenn Du alle Fragen hier im Thread stellst und nicht per PN an User!
 
@ gishmo / dms
Könnt ihr mir noch mit dem Formular weiter Helfen?
Suche noch immer vergebens nach einem Script für
einen Checkbox Button, sowie für eine Auswahl Dropdown-Liste!
siehe auch http://verteiler.ccpr.de
Betreffend Punkte: Datenschutz und Position



@ wegusAbsolutes Sorry !!!!!!
(Bin noch Neuling in Foren)
Dachte durch das Icon kann ich direkt mit dem Autoren in Kontakt treten!
 
Zurück
Oben Unten