Ergebnis 1 bis 12 von 12
  1. #1
    bitos ist offline Grünschnabel
    registriert
    28-02-2009
    Beiträge
    8

    Textarea mit RegExp überprüfen

    Hallo Forum
    Schon seit längerem habe ich ein grosses Problem mit der Formularüberprüfung mittels RegExp. Ich habe das Internet und dieses Forum schon ziemlich abgegrast, konnte aber keine wirklich gute Hilfe finden. Ich hoffe, dass Ihr mir bei meinem Problem helfen könnt.

    Folgendes Formular überprüfe ich mittels RegExp:
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Formular</title>
    
    <script type="text/javascript" language="javascript" src="clientscripts/validation2.js"></script>
    </head>
    
    <body>
    	<div id="content">
    		<form id="contact" name="contact" action="" method="post" onsubmit="return formcheck()">
    			<fieldset>
                	<legend>Personalien</legend>
                    <label class="davor" for="firstname">Vorname:</label>
                    <input type="text" id="firstname" name="firstname" tabindex="1" accesskey="v" onblur="return valfirstname()" /><p id="errorfirstname">&nbsp;</p><br />
                    <label class="davor" for="surname">Nachname:</label>
                    <input type="text" id="surname" name="surname" tabindex="2" accesskey="n" onblur="return valsurname()" /><p id="errorsurname">&nbsp;</p><br />
                    <label class="davor" for="street">Strasse:</label>
                    <input type="text" id="street" name="street" tabindex="3" accesskey="s" onblur="return valstreet()" /><p id="errorstreet">&nbsp;</p><br />
                    <label class="davor" for="zip">PLZ:</label>
                    <input type="text" id="zip" name="zip" tabindex="4" accesskey="p" onblur="return valzip()" /><p id="errorzip">&nbsp;</p><br />
                    <label class="davor" for="city">Ort:</label>
                    <input type="text" id="city" name="city" tabindex="5" accesskey="o" onblur="return valcity()" /><p id="errorcity">&nbsp;</p><br />
                    <label class="davor" for="email">Email:</label>
                    <input type="text" id="email" name="email" tabindex="6" accesskey="e" onblur="return valemail()" /><p id="erroremail">&nbsp;</p><br />
                    <label class="davor" for="phone">Telefon:</label>
                    <input type="text" id="phone" name="phone" tabindex="7" accesskey="t" onblur="return valphone()" /><p id="errorphone">&nbsp;</p><br />
                    <label class="davor" for="remarks">Bemerkungen:</label>
                    <textarea name="remarks" id="remarks" tabindex="8" accesskey="b" rows="5" cols="45" onblur="return valremarks()"></textarea><p id="errorremarks">&nbsp;</p><br />
    			</fieldset>
                <input type="submit" name="submit" id="submit" value="Senden" tabindex="8" />
    		</form>
    	</div><!-- end content -->
    </body>
    </html>
    Die Überprüfung habe ich folgendermassen aufgebaut:
    Code:
    //Definition error-array
    document.charset = "utf-8";
    var error = new Array(8); 
    
    //Definitionen der RegExp-Variablen
    var regText
    var regTextNum 
    var regZip
    var regPhone
    var regMail
    
    //Regex for firstname, surname, street and City
    regText=/^([a-zA-ZäÄöÖüÜéèàâç])?([a-zA-ZäÄöÖüÜéèàâç\-\.\s])*$/;
    regTextNum=/^([0-9a-zA-ZäÄöÖüÜéèàâç])?([0-9a-zA-ZäÄöÖüÜéèàâç\-\.\s])*$/;
    regZip=/^([0-9]{4,5})*$/;
    regPhone=/^([0-9\s\(\)\+\-\/]{9,30})*$/;
    regMail=/^([a-zA-Z0-9_\.\-])+@(\[)?([a-zA-Z0-9_\.\-)*([a-zA-Z0-9_\-]{2,})\.([a-zA-Z]{2,6}|[0-9]{1,3}\])$/;
    
    
    
    /* ****** Formular initialisieren (Setze Fokus in das erste Feld namens 'firstname' ****** */
    function init() {
    	document.getElementById('firstname').focus();
    }
    
    
    /* ****** Validation Vorname ****** */
    function valfirstname() {
    	error[0]="&nbsp;";
    	var text=document.getElementById('firstname').value;
    	if(!text){
    		error[0]="Bitte geben Sie Ihren Vornamen ein.";
    		//Aufruf Funktion
    		errorfiled('firstname');
    	}
    	else if(text.match(regText)==null && text) {
    		error[0]="Bitte geben Sie einen gültigen Vornamen ein.";
    		//Aufruf Funktion
    		errorfiled('firstname');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('firstname');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    
    
    /* ****** Validation Nachname ****** */
    function valsurname() {
    	error[1]="&nbsp;";
    	var text=document.getElementById('surname').value;
    	if(!text){
    		error[1]="Bitte geben Sie Ihren Nachnamen ein.";
    		//Aufruf Funktion
    		errorfiled('surname');
    	}
    	else if(text.match(regText)==null && text) {
    		error[1]="Bitte geben Sie einen gültigen Nachnamen ein.";
    		//Aufruf Funktion
    		errorfiled('surname');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('surname');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    /* ****** Validation Strasse ****** */
    function valstreet() {
    	error[2]="&nbsp;";
    	var text=document.getElementById('street').value;
    	if(!text){
    		error[2]="Bitte geben Sie die Strasse ein.";
    		//Aufruf Funktion
    		empty('street');
    	}
    	else if(text.match(regTextNum)==null && text) {
    		error[2]="Bitte geben Sie eine gültige Strassenbezeichnung ein.";
    		//Aufruf Funktion
    		errorfiled('street');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('street');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    
    /* ****** Validation PLZ ****** */
    function valzip() {
    	error[3]="&nbsp;";
    	var text=document.getElementById('zip').value;
    	if(!text){
    		error[3]="Bitte geben Sie die Postleitzahl ein.";
    		//Aufruf Funktion
    		errorfiled('zip');
    	}
    	else if(text.match(regZip)==null && text) {
    		error[3]="Bitte geben Sie eine gültige Postleitzahl ein.";
    		//Aufruf Funktion
    		errorfiled('zip');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('zip');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    
    /* ****** Validation Ort ****** */
    function valcity() {
    	error[4]="&nbsp;";
    	var text=document.getElementById('city').value;
    	if(!text){
    		error[4]="Bitte geben Sie die Ortsbezeichnung ein.";
    		//Aufruf Funktion
    		errorfiled('city');
    	}
    	else if(text.match(regText)==null && text) {
    		error[4]="Bitte geben Sie eine gültige Ortsbezeichnung ein.";
    		//Aufruf Funktion
    		errorfiled('city');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('city');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    
    /* ****** Validation Email ****** */
    function valemail() {
    	error[5]="&nbsp;";
    	var text=document.getElementById('email').value;
    	if(!text){
    		error[5]="Bitte geben Sie die Email-Adresse ein.";
    		//Aufruf Funktion
    		errorfiled('email');
    	}
    	else if(text.match(regMail)==null && text) {
    		error[5]="Bitte geben Sie eine gültige Email-Adresse ein.";
    		//Aufruf Funktion
    		errorfiled('email');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('email');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    /* ****** Validation Telefon ****** */
    function valphone() {
    	error[6]="&nbsp;";
    	var text=document.getElementById('phone').value;
    	if(!text){
    		error[6]="Bitte geben Sie die Telefonnummer ein.";
    		//Aufruf Funktion
    		errorfiled('phone');
    	}
    	else if(text.match(regPhone)==null && text) {
    		error[6]="Bitte geben Sie eine gültige Telefonnummer ein.";
    		//Aufruf Funktion
    		errorfiled('phone');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('phone');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    /* ****** Validation Bemerkung ****** */
    function valremarks() {
    	error[7]="&nbsp;";
    	var text=document.getElementById('remarks').value;
    	if(!text){
    		error[7]="Bitte geben Sie eine Bemerkung ein.";
    		//Aufruf Funktion
    		empty('remarks');
    	}
    	else if(text.match(regTextNum)==null && text) {
    		error[7]="Bitte geben Sie eine gültige Bemerkung ein.";
    		//Aufruf Funktion
    		errorfiled('remarks');
    	}
    	else {
    		//Aufruf Funktion
    		okfiled('remarks');
    	}
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    
    /* ******* Gesamtes Formular validieren ****** */
    function formcheck() {
    	document.charset = "utf-8";
    	valfirstname();
    	valsurname();
    	valstreet();
    	valzip();
    	valcity();
    	valemail();
    	valphone();
    	valremarks();
    	
    	//Error-Aufruf
    	errors();
    	if(error) {
    		return false;
    	}
    }
    
    /* ****** Fehlerhandling ****** */
    function errors() {
    	//Erstellen der Fehlermeldung
    	if(error[0]) {
    		document.getElementById('errorfirstname').innerHTML=error[0];
    	}
    	if(error[1]) {
    		document.getElementById('errorsurname').innerHTML=error[1];
    	}
    	if(error[2]) {
    		document.getElementById('errorstreet').innerHTML=error[2];
    	}
    	if(error[3]) {
    		document.getElementById('errorzip').innerHTML=error[3];
    	}
    	if(error[4]) {
    		document.getElementById('errorcity').innerHTML=error[4];
    	}
    	if(error[5]) {
    		document.getElementById('erroremail').innerHTML=error[5];
    	}
    	if(error[6]) {
    		document.getElementById('errorphone').innerHTML=error[6];
    	}
    	if(error[7]) {
    		document.getElementById('errorremarks').innerHTML=error[6];
    	}
    }
    
    
    /* ****** Fehler CSS ****** */
    function errorfiled(idname) {
    	document.getElementById(idname).style.backgroundColor="#FF0000";
    }
    
    
    /* ****** OK CSS ****** */
    function okfiled(idname) {
    	document.getElementById(idname).style.backgroundColor="#00FF00";
    }
    
    /* ****** Empty CSS ****** */
    function empty(idname) {
    	document.getElementById(idname).style.backgroundColor="#eef2e5";
    }
    Eigentlich funktioniert alles sehr gut. Nur mit dem Bemerkungsfeld (textarea) habe ich so meine grosse Mühe. Wenn ich dieses weglasse und das JS entsprechend anpasse, läuft alles. Merkwürdig ist, dass wenn ich das Textarea mit einbinde, das Formular tesweise ausfülle, so erscheint unter "errorremarks" die Fehlermeldung für den fehlenden Eintrag für die Telefonnummer. Gebe ich die Telefonnummer ein, so verschwindet auch die Fehlermeldung für das Textarea.

    Kann es sein, dass Funktion für die Textfelder nicht für ein Textarea geeignet sind? Falls ja, kann ich mein Textarea trotzdem mit RegExp überprüfen und wie?

    Für Eure Hilfe bin ich echt dankbar

    Gruss
    Bitos

  2. #2
    ToM80 ist offline Foren-Gott
    registriert
    27-03-2006
    Ort
    Neuss
    Beiträge
    2.729

    AW: Textarea mit RegExp überprüfen

    Eigentlich ganz simpel:
    Code:
    	if(error[7]) {
    		document.getElementById('errorremarks').innerHTML=error[6];
    	}
    Aber manchmal sieht man den Wald vor lauter Bäumen nicht ;-)

  3. #3
    bitos ist offline Grünschnabel
    registriert
    28-02-2009
    Beiträge
    8

    AW: Textarea mit RegExp überprüfen

    ooohhh nein!!!!

    ich suche gerade das Loch wo ich im Boden versinken kann...

    Danke Dir

  4. #4
    bitos ist offline Grünschnabel
    registriert
    28-02-2009
    Beiträge
    8

    AW: Textarea mit RegExp überprüfen

    uups, zu früh gefreut, ich kann das Formular nicht abschicken!

    Code:
    <?php
    if ($_SERVER['REQUEST_METHOD'] == "POST")
    {
    	//Empfänger
    	$empfaenger = "meineadresse@domain.*";
    						
    	//Betreff.
    	$betreff = "Anfrage WEB";
    
    	$kopf = "From: $_POST[email]";
    	
    
    	$text .= "Anfrage zum Thema '$_POST[bereich]'\n\n";
    	$text .= "Absender:\n";
    	$text .= "$_POST[firstname] $_POST[surname]\n";
    	$text .= "$_POST[street]\n";
    	$text .= "$_POST[zip] $_POST[city]\n\n";
    	$text .= "$_POST[phone]\n";
    	$text .= "$_POST[email]\n\n";
    	$text .= "Bemerkung:\n";
    	$text .= "$_POST[remarks]";
    	
    	$text=utf8_decode($text);
    
    	mail($empfaenger, $betreff, $text, $kopf);		
    		
    	$senden = "ok";
    }
    ?>
    <!DOCTYPE html PUBLIC............
    
    
    .....
        <?php
    	if ($senden == "ok")
    	{
    	?>
    	<p>Vielen Dank für Ihre Anfrage. Wir werden so bald wie möglich Kontakt mit Ihnen aufnehmen.</p>
    
      <?php
    	}
    	else
    	{
    	?>
        	<h1>Kontaktformular</h1>
    	<div id="content">
    		<form id="contact" name="contact" action="" method="post" onsubmit="return formcheck()">
    			<fieldset>
                	<legend>Personalien</legend>
                    <label class="davor" for="firstname">Vorname:</label>
                    <input type="text" id="firstname" name="firstname" tabindex="1" accesskey="v" onblur="return valfirstname()" /><p id="errorfirstname">&nbsp;</p><br />
                    <label class="davor" for="surname">Nachname:</label>
                    <input type="text" id="surname" name="surname" tabindex="2" accesskey="n" onblur="return valsurname()" /><p id="errorsurname">&nbsp;</p><br />
                    <label class="davor" for="street">Strasse:</label>
                    <input type="text" id="street" name="street" tabindex="3" accesskey="s" onblur="return valstreet()" /><p id="errorstreet">&nbsp;</p><br />
                    <label class="davor" for="zip">PLZ:</label>
                    <input type="text" id="zip" name="zip" tabindex="4" accesskey="p" onblur="return valzip()" /><p id="errorzip">&nbsp;</p><br />
                    <label class="davor" for="city">Ort:</label>
                    <input type="text" id="city" name="city" tabindex="5" accesskey="o" onblur="return valcity()" /><p id="errorcity">&nbsp;</p><br />
                    <label class="davor" for="email">Email:</label>
                    <input type="text" id="email" name="email" tabindex="6" accesskey="e" onblur="return valemail()" /><p id="erroremail">&nbsp;</p><br />
                    <label class="davor" for="phone">Telefon:</label>
                    <input type="text" id="phone" name="phone" tabindex="7" accesskey="t" onblur="return valphone()" /><p id="errorphone">&nbsp;</p><br />
                    <label class="davor" for="remarks">Bemerkungen:</label>
                    <textarea name="remarks" id="remarks" tabindex="8" accesskey="b" rows="5" cols="45" onblur="return valremarks()"></textarea><p id="errorremarks">&nbsp;</p><br />
    			</fieldset>
                <input type="submit" name="submit" id="submit" value="Senden" tabindex="8" />
    		</form>
    
          <?php
    		}
    		?>
    Bin noch Anfänger und bitte deshalb um Verzeihung, aber wieso lässt sich das Formular nicht absenden?

    Wäre toll, wenn Du mir nochmal helfen könntest

    Gruss
    Bitos
    Geändert von bitos (29-06-2009 um 13:33 Uhr) Grund: unvollständig

  5. #5
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Textarea mit RegExp überprüfen

    Zitat Zitat von bitos Beitrag anzeigen
    uups, zu früh gefreut, ich kann das Formular nicht abschicken!

    Code:
    		<form id="contact" name="contact" action="" method="post" onsubmit="return formcheck()">
    wo ist diese JS Funktion? was gibt sie zurück?

  6. #6
    bitos ist offline Grünschnabel
    registriert
    28-02-2009
    Beiträge
    8

    AW: Textarea mit RegExp überprüfen

    Diese Funktion ist i einer verknüpften JS-Datei. In meinem ersten Beitrag ist die Funktion beschrieben. Sie überprüft die einzelen Felder. Wenn die Felder den RegExp-Bedingungen entsprechen, gibt sie den Wert true und das Formular "sollte" abgeschickt werden können...

  7. #7
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Textarea mit RegExp überprüfen

    Gut versteckt, stimmt. Dann sollte alles funktionieren, es sei denn du hast einen Fehler eingebaut (ich nemeh an in die Fehlerkonsole hast du schon geschaut?)

  8. #8
    ToM80 ist offline Foren-Gott
    registriert
    27-03-2006
    Ort
    Neuss
    Beiträge
    2.729

    AW: Textarea mit RegExp überprüfen

    Wohin soll er das Formular denn senden? Action hast du ja leer gelassen.

  9. #9
    Juppiduh ist offline Doppel-As
    registriert
    17-06-2009
    Beiträge
    143

    AW: Textarea mit RegExp überprüfen

    Das Problem sitzt hier:

    var error = new Array(8);

    und in der Funktion steht das:
    if(error)return false;

    Es wird also immer false zurückgegeben.

  10. #10
    bitos ist offline Grünschnabel
    registriert
    28-02-2009
    Beiträge
    8

    AW: Textarea mit RegExp überprüfen

    Hallo ToM80
    Sehr guter hinweis, doch ich muss wie gesagt zugestehen, dass ich ein php-Anfänger bin. Ich habe ein statischer Webauftritt lediglich mit einem PHP-Formular ausgestattet, damit beim Emailversand eines Besuchers kein lokaler email-client installiert und eingerichtet sein muss. Könntest Du mir bitte erklären, was ich bei action eingeben muss, damit die Formularinhalte zur gewünschten Emailadresse gesendet werden?
    Wäre echt nett
    Bin im Moment leider noch auf fremde Hilfe angewiesen....

  11. #11
    Juppiduh ist offline Doppel-As
    registriert
    17-06-2009
    Beiträge
    143

    AW: Textarea mit RegExp überprüfen

    Zitat Zitat von bitos Beitrag anzeigen
    Könntest Du mir bitte erklären, was ich bei action eingeben muss ...?
    Wenn bei action nichts steht wird das Formular an die Datei gesandt, in der es sich befindet.

  12. #12
    ToM80 ist offline Foren-Gott
    registriert
    27-03-2006
    Ort
    Neuss
    Beiträge
    2.729

    AW: Textarea mit RegExp überprüfen

    Zitat Zitat von bitos Beitrag anzeigen
    Hallo ToM80
    Sehr guter hinweis, doch ich muss wie gesagt zugestehen, dass ich ein php-Anfänger bin. Ich habe ein statischer Webauftritt lediglich mit einem PHP-Formular ausgestattet, damit beim Emailversand eines Besuchers kein lokaler email-client installiert und eingerichtet sein muss. Könntest Du mir bitte erklären, was ich bei action eingeben muss, damit die Formularinhalte zur gewünschten Emailadresse gesendet werden?
    Wäre echt nett
    Bin im Moment leider noch auf fremde Hilfe angewiesen....
    Hier findest du ein Tutorial: http://www.php-einfach.de/php-tutorial/php-mail.php

    In Action musst du die Seite eintragen auf der die Forumlardaten verarbeitet werden sollen. Dies kann durchaus auf der gleichen Seite passieren, dann trägst du z. B.
    PHP-Code:
    <form id="formTest" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    ein.

    Nun musst du halt auf der Seite noch abfangen ob die Datei überhaupt gesendet wurde, z. B.:
    PHP-Code:
    <?php if (isset($_POST['firstname'])) {
    //MAILVERSAND
    //Und statt Formular z. B. einen Text schreiebn, dass Form versendet
    } else {
    //DAS FORMULAR
    ?>
    Edit: Sehe gerade hast die Mailverarbeitung schon geschrieben.
    Aber:
    PHP-Code:
    $text.="Anfrage zum Thema '$_POST[bereich]'\n\n"
    solltest du:
    PHP-Code:
    "Anfrage zum Thema '".$_POST['bereich']."'\n\n"
    schreiben.
    Wichtig ist, dass in den Postklammern noch Hochkommas gesetzt sind $_REQUEST['irgendwas'].
    Geändert von ToM80 (29-06-2009 um 15:07 Uhr) Grund: QUELLTEXT NICHT GESEHEN

Ähnliche Themen

  1. WYSIWYG Textarea ID
    Von yabexxl im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 19-04-2008, 22:30
  2. 2 js für eine textarea
    Von labu im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 26-11-2007, 11:09
  3. Aus iFrame in textarea
    Von thorben76 im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 22-10-2005, 21:21
  4. Formular Variablen in einer Textarea definieren !?!
    Von Natheedo im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 28-11-2004, 22:56
  5. textarea in textarea
    Von sanchez im Forum Allgemeines
    Antworten: 2
    Letzter Beitrag: 05-11-2003, 16:17

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •