Ergebnis 1 bis 5 von 5
  1. #1
    JackWhiteIII ist offline Grünschnabel
    registriert
    11-08-2013
    Beiträge
    3

    Problem bei Formvalidierung

    Hallo,
    ich habe ein Problem auf meiner Website, auf der ich (später) ein Loginsystem einbauen möchte. Dafür möchte ich im Registrierungsteil ein Form abschicken, das vorher durch ein JavaScript geprüft wird. Dabei soll auf Sonderzeichen sowie eigentliche Eingabe geprüft werden.
    Hier kommt mein Problem ins Spiel:
    Benutzername: Mustermann
    Passwort: Muster
    Wiederholtes Passwort: Mgtter //schwerwiegender Schreibfehler, Script gibt also false zurück.

    Das funktioniert wunderbar, das Form wird nicht abgesandt. Drückt man nun noch einmal auf den Abschicken Button, so wird das Form trotz JavaScriptüberprüfung abgeschickt!

    Dies ist die Registerseite meiner Website: Java Applet Gaming
    Dies ist das JavaScript: http://javaappletgaming.bplaced.net/registerscript.js

    An diesem Problem habe ich für etwas 5 Stunden gesessen und habe Google durchforstet sowie Korrektur gelesen.
    Über eine Hilfestellung oder (bei einem kleinen Fehler) eine Korrektur würde ich mich sehr freuen.
    Vielen Dank im vorraus

  2. #2
    schlegel.berlin ist offline Routinier
    registriert
    06-03-2005
    Beiträge
    288

    AW: Problem bei Formvalidierung

    1.) Poste doch bitte mal dein Formscript.
    2.) Beschreib bitte genau, auf was Du prüfen willst.
    Sollen, oder müssen bestimmte Zeichen eingegeben werden? Oder dürfen bestimmte Zeichen nicht eingegeben werden?

    Dann kann Dir sicher geholfen werden... :-)

    LG, Karin

  3. #3
    JackWhiteIII ist offline Grünschnabel
    registriert
    11-08-2013
    Beiträge
    3

    AW: Problem bei Formvalidierung

    Hallo,
    vielen Dank für deine Antwort. Hier einmal das Formular:
    HTML-Code:
    <form enctype="multipart/form-data" action="/register.php" method="POST" onsubmit="return beforeSubmit();">
    	Enter username <input type="text" id="un" name="username" x-webkit-speech=""><br>
    	Enter password <input type="text" id="pw1" name="password" x-webkit-speech=""><br>
    	Repeat password <input type="text" id="pw2" name="passwordrepeated" x-webkit-speech=""><p id="error"></p><br>
    	<input type="submit" value="Register" x-webkit-speech="">
    </form>
    und hier das JavaScript:

    Code:
    var iChars = "~`!#$%^&*+=-[]\\\';,/{}|\":<>?";
    var usname = "";
    var pw1 = "";
    var pw2 = "";
    var notequal = false;
    var pw1empty = false;
    var pw2empty = false;
    var usempty = false;
    var invalid = false;
    
    if(document.getElementById("error") === null){
    	var uswarning = document.createElement('p');
    	uswarning.innerHTML = '';
    	uswarning.id = "error";
    	var ustag = document.getElementById('pw2');
    	insertAfter(ustag,uswarning);
    	var error = document.getElementById("error");
    }
    
    function getInputs(){
    	usname = document.getElementById('un').value;
    	pw1 = document.getElementById('pw1').value;
    	pw2 = document.getElementById('pw2').value;
    	notequal = false;
    	pw1empty = false;
    	pw2empty = false;
    	usempty = false;
    	invalid = false;
    }
    
    function beforeSubmit(){
    	getInputs();
    	
    	if(usname.length > 0){
    		for(var i = 0; i < iChars.length; i++){
    			for(var j = 0; j < usname.length; j++){
    				if((usname.charAt(j) == iChars.charAt(i))){
    					error.innerHTML = 'Username must not contain the following Characters: '+iChars.charAt(i);
    					invalid = true;
    				}
    			}
    		}
    	}else{
    		error.innerHTML = 'You must enter a username!';
    		usempty = true;
    	}
    	
    	if((pw1.length > 0) && (pw2.length > 0)){
    		if(pw1.length == pw2.length){
    			for(var i = 0; i<pw1.length; i++){
    				if(pw1.charAt(i) != pw2.charAt(i)){
    					error.innerHTML = 'Both fields must match!';
    					notequal = true;
    				}
    			}
    		}else{
    			error.innerHTML = 'Both fields must match!';
    			notequal = true;
    		}
    	}else{
    		error.innerHTML = 'You must enter a password!';
    		pw1empty = true;
    		pw2empty = true;
    	}
    	
    	if(usempty || notequal || pw1empty || pw2empty || invalid){
    		alert('usempty:' + usempty + ' notequal: ' + notequal + ' pw1empty ' + pw1empty + ' pw2empty ' + pw2empty + ' invalid ' + invalid);
    		return false;
    	}else{
    		return true;
    	}
    }
    
    function insertAfter(referenceNode, newNode) {
        referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
    }
    Das JavaScript ist nun funktionstüchtig.
    Gibt man Sonderzeichen beim Benutzernamen ein (z.B. ein %), so wird eine Fehlermeldung angezeigt. Selbiges gilt für den Fall, dass Passwort und Passwortwiederholung nicht gleich sind.
    Mein Problem war, dass im Script nicht alle Errorvariablen wieder auf false gesetzt wurden. Dies war mir erst aufgefallen, als ich sie mir mittels alert('') habe anzeigen lassen (den alert werde ich vorerst wieder auskommentieren).
    Das war meine erste "größere" Arbeit in JavaScript, die nun ja geglückt ist.
    Mit JavaScript hatte ich erst vor 3 tagen angefangen, weshalb der Code sicher noch nicht 100% sauber ist.
    Gestern hatte ich das ganze schon Berichtigt, war jedoch nicht mehr dazu gekommen, die Berichtigung hier zu posten.
    Vielen Dank für die eigentliche Mühe, verstehen zu wollen, was mein Problem war (ich fand es recht schwer zu beschreiben).
    Sollte ich weitere Probleme haben, werde ich mich wieder melden.

  4. #4
    schlegel.berlin ist offline Routinier
    registriert
    06-03-2005
    Beiträge
    288

    AW: Problem bei Formvalidierung

    Gratulation (das mit der Alertbox ist grundsätzlich, grade bei "Anfängern", ein gutes Hilfsmittel zur Fehlersuche)!

    Hatte jetzt einige Tag wg. Abwesenheit (hab ein paar Tage in London gearbeitet) keine Gelegenheit reinzuschauen, in's Forum, meine ich :-)
    Ja, ja, das kenne ich gut. Es schleichen sich anfänglich gerne Fehler ein, die sich nicht so leicht finden lassen. Hartnäckigkeit hilft da meist schon weiter ...

    Dafür, dass dies die erste größere Javascript-Arbeit für Dich war, wie Du schriebst, finde ich das Script beachtlich...

    Vielleicht ein kleiner Tpp am Rande:
    In einer Fehlermeldung schreibst Du: "Username must not contain the following Characters:"
    Das ist durchaus korrektes englisch. Ein "Native Speaker" würde dennoch eher formulieren:
    User name mustn't contain the following characters:

    Aber das ist wirklich eine lächerliche Nebensächlichkeit... :-)

    LG, Karin
    Geändert von schlegel.berlin (19-08-2013 um 14:55 Uhr) Grund: Tippfehler

  5. #5
    JackWhiteIII ist offline Grünschnabel
    registriert
    11-08-2013
    Beiträge
    3

    AW: Problem bei Formvalidierung

    London, sehr schön. Da finde ich endlich jemanden auf der Welt, der BE spricht. I had noticed my spelling mistakes before but couldn't be bothered to correct them. I just did so - I want to keep my website nice and clean.

    Allerdings habe ich da noch eine Frage: Muss ich, um JavaScript mit PHP zu verbinden, mir vorher tatsächlich jQuery aneignen? Es ist mir natürlich klar, dass beide auf gänzlich anderer Technik basieren (serverside, clientside), jedoch wäre es ganz schön, bekäme der Benutzer eine Meldung, dass sein ausgewählter Benutzername schon vergeben ist, bevor das externe PHP Script ausgeführt wurde. Es wäre doch nervig, würde man immer Seiten neu laden müssen, weil der Name schon vergeben ist.

    Ich sehe gerade keinen "Thema schließen"-Button, darum nehme ich an, dass die Themen schriftlich geschlossen werden?
    Wie dem auch sei, vielen Dank für den Hinweis auf meinen Rechtschreibfehler.

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 05-05-2012, 00:36
  2. mootool problem (javascript problem?)
    Von cool-tool im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 14-02-2009, 17:06

Stichworte

Lesezeichen

Berechtigungen

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