106949
Goto Top

HTML Formular - Java Script funktioniert nicht

Hallo zusammen,

ich habe auf einer Homepage ein HTML Formular für eine Anmeldung gebaut und beim "Absendenbutton" wird über OnClick mit einem Javascript überprüft, dass in jedem Feld ein Inhalt ist. Wenn das Überprüfen abgeschlossen ist, wird der Inhalt der Formulars in eine MySQL Datenbank geschrieben.

<script type="text/javascript">  
function chkFormular () {
    
  if (document.Formular.Vorname.value == "") {  
    alert("Bitte Ihren Vornamen eingeben!");  
    document.Formular.Vorname.focus();
    return false;  }
    
   if (document.Formular.Name.value == "") {  
    alert("Bitte Ihren Namen eingeben!");  
    document.Formular.Name.focus();
    return false;  }
    
	if (document.Formular.Strasse.value == "") {  
    alert("Bitte Ihren Strasse eingeben!");  
    document.Formular.Strasse.focus();
    return false;  }
</script>
...
<form class="Formular" name="Formular" action="Anmeldung.php" method="post">  
...
<table bordercolor="#000000" width="100%">  
<tr><th class="AbsatztextKopie">Vorname:</th><th class="AbsatztextKopie"><input type="text" size="40" name="Vorname" style="width:250px" id="Vorname"></th></tr>  
<tr><th class="AbsatztextKopie">Name:</th><th class="AbsatztextKopie"><input type="text" size="40" name="Nachname" style="width:250px" id="Nachname"></th></tr>  
<tr><th class="AbsatztextKopie">Strasse + H.Nr.:</th><th class="AbsatztextKopie"><input type="text" size="40" name="Strasse" style="width:250px" id="Strasse"></th></tr>  
</table>
<input type="submit" onClick="return chkFormular()"><input type="reset">  

Leider funktioniert die Überprüfung nicht mehr und ich weiß auf Anhieb auch nicht wieso?! Hat bisher eigentlich immer funktioniert...

Wo liegt der Fehler?

LG Stefan

Content-Key: 192376

Url: https://administrator.de/contentid/192376

Printed on: April 19, 2024 at 07:04 o'clock

Member: nxclass
nxclass Oct 08, 2012 updated at 10:37:25 (UTC)
Goto Top
nach Zeile 18 einfügen:
    return true;
}
... ich empfehle ein Blick in die Fehlerkonsole des Browsers. Es gibt da auch nette Plugins für Entwickler.

EDIT:
Ich würde das mit onsubmit="" im FORM tag machen und nicht beim Submit button.
Mitglied: 106949
106949 Oct 08, 2012 at 11:24:52 (UTC)
Goto Top
Hallo nxclass,

danke schon mal für deinen Tipp.

Habe in Zeile 8, 13 und 18 das "return false" in "return true" geändert. Zudem das submit vom Button in den Formtag "verschoben".

Bringt leider beides nixs....
Könnte man die Überprüfung auch in die PHP-Seite umziehen

LG
Member: nxclass
nxclass Oct 08, 2012 at 21:07:19 (UTC)
Goto Top
Habe in Zeile 8, 13 und 18 das "return false" in "return true" geändert.
... das ist Falsch - wenn ein Fehler Auftritt darf das Formular nicht gesendet werden das bewirkt man mit return false

Nur wenn all deine Prüfungen erfolgreich sind (nicht fehlerhaft) wird mit return true das formular gesendet.

Ich würde das mit onsubmit="" im FORM tag machen und nicht beim Submit button.
setze das noch um - dann sollte das gehen

<form ... onsubmit="chkFormular();" ... />
...
<input type="submit" name="" value="" />
...


Könnte man die Überprüfung auch in die PHP-Seite umziehen
natürlich - auch eine Prüfung per Ajax call ist machbar - ich würde sogar soweit gehen und sagen "es MUSS eine Prüfung seitens PHP erfolgen", da du nicht sicher sein kannst wie und woher die Daten an dein PHP Script (und dann in die DB !?) gesendet werden.
Mitglied: 106949
106949 Oct 09, 2012 at 05:41:16 (UTC)
Goto Top
aaaaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrrhhhhhhhhhhhhhhhhhhh!!!!

Tut mir leid, dass ich überhaupt geschrieben habe, denn wer lesen kann ist klar im Vorteil!

<script type="text/javascript">  
 function chkFormular () {
         if (document.Formular.Name.value == "") {  
     alert("Bitte Ihren Namen eingeben!");  
     document.Formular.Name.focus();
     return false;  }
</script>
...
Name:<input type="text" size="40" name="Nachname" style="width:250px" id="Nachname">  

Ich überprüfe oben nach dem Feld "Name", das aber unten "Nachname" heißt. Somit hat er den Vornamen überprüft, wollte den Nachnamen prüfen, was er nicht konnte. Den Rest hat er dann übersprungen...

LG Stefan und danke für die Hilfe :D
Member: Guenni
Guenni Oct 12, 2012 at 21:06:32 (UTC)
Goto Top
Hi StefanHuber,

1. Interessant find' ich, dass keine Fehlermeldung kommt bzw. dass dein Code funktioniert.

Bei deiner Funktion fehlt nämlich die abschließende Klammer des Funktionsrumpfs (s.u.).

<script type="text/javascript">  


function chkFormular () { // Klammer begin function
    
Dreimal if( . . .) { Anweisungen }

**} // Klammer end function fehlt**

</script> 

Oder ist die beim Kopieren verlorengegangen face-smile


2. Mal so als Hinweis: Deine Prüfung, ob ein Textfeld nichts enthält (if (document.Formular.Vorname.value == "") . . . ),

mag auf den ersten Blick funktionieren, aber wenn man hier Leerzeichen eingibt, so sind auch diese gültige Eingaben und das Formular

wird gesendet. Besser wäre, man prüft, ob z.B. Buchstaben eingegeben wurden.

<script type="text/javascript">  
<!--
function check_eingabe(){
 /*
 * Wir gehen von einer Nichteingabe aus und setzen ok auf false.
 */
 ok=false;
 //Prüfen, ob das Textfeld **nick** Buchstaben enthält, damit schon mal
 //das Feld nicht leer bleibt.
 muster=/[A-Za-zÄÖÜäöüß]/; 
 test_eingabe=muster.exec(document.formular.nick.value);
 /*
 * Wenn das Textfeld Buchstaben enthält, ok auf true setzen.
 */
 if(test_eingabe){ok=true;}
 /*
 * Wenn das Textfeld keine Buchstaben enthält, bleibt ok false. Dann Hinweis ins Textfeld schreiben,
 * den Fokus auf das Textfeld setzen und Text markieren
 */
 if(!ok){
  document.formular.nick.value="Bitte korrekt ausfüllen!";  
	document.formular.nick.focus();
	document.formular.nick.select();
 return false;
 }
 return true;
}
// -->
</script>

Diese Überprüfung läßt Buchstaben, Buchstaben und Zahlen zu, aber nicht Zahlen ohne Buchstaben.

Gruß
Günni
Mitglied: 106949
106949 Oct 13, 2012 at 07:36:03 (UTC)
Goto Top
Hi Günni,

bei 1.) ist tatsächlich nur beim Rauskopieren die Klammer verloren gegangen

zu 2.): ich werde es mal versuchen und dir dann schreiben, obs geklappt hat oder nicht face-smile

Danke schon mal
LG Stefan
Mitglied: 106949
106949 Oct 15, 2012 at 06:07:56 (UTC)
Goto Top
Hi,
habe es nun versucht, nur kann ich jetzt das Formular immer abschicken und es wird nie überprüft, ob das Feld Buchstaben oder sonst was enthält... evtl. irgendwo ein Fehler drinnen?

LG
Member: Guenni
Guenni Oct 15, 2012 at 20:57:48 (UTC)
Goto Top
Hi StefanHuber,

hast du das Script auch an dein Formular angepasst?

Ich hab' das Script auch nur kopiert und gepostet. Es überprüft das

Textfeld nick aus meinem Formular, welches du durch die Namen

deiner Textfelder ersetzen musst.

Statt . . .

test_eingabe=muster.exec(document.formular.nick.value); 

. . . muß es bei dir natürlich . . .

test_eingabe=muster.exec(document.formular.Vorname.value); 

. . . heißen. Und das für jedes Textfeld, das du prüfen möchtest.


... evtl. irgendwo ein Fehler drinnen?

Nein, hab's gerade noch mal probiert. Das Formular wird nicht gesendet,

wenn keine Buchstaben im Textfeld sind.

Gruß
Günni
Mitglied: 106949
106949 Oct 24, 2012 at 08:28:00 (UTC)
Goto Top
Hi Günni,

pppppffffrrrr :D
Klar hab ich Nick durch meine Feldnamen ersetzt face-smile

Dann prüfe ich einfach nochmal, denn der Fehler muss dann bei mir liegen.

LG und danke für die Mühe