# Thema: Bei Formular mit Link-Submit die Enter-Taste abfangen



## Neppo (12. August 2004)

Ich möchte mehrere Formulare auf meine Homepage einbinden, die anstatt einem HTML-Submit-Button einen normalen Text-Link haben. Vor dem senden werden die Felder überprüft, ob diese ausgefüllt sind. Wenn man auf den Link klickt wird alles ordnungsgemäß überprüft und gegebenenfalls "verschickt". 
ABER: Wenn jemand die Enter-Taste drückt, dann wird das Formular OHNE überprüfung verschickt.  

Gibt es eine Lösung, dass entweder beim drücken der Enter-Taste die Überprüfung statt findet oder einfach nichts passiert? 

Die Formulare haben folgendes Schema: 

<HTML> 
<HEAD> 

<script language="JavaScript" type="text/javascript"> 
<!-- 

function checkAndSend() 
{ 
if (document.nlForm.feld1.value == "") 
{ 
alert ("Du hast Feld1 nicht ausgefüllt!"); 
} 

if (document.nlForm.feld2.value == "") 
{ 
alert ("Du hast Feld2 nicht ausgefüllt!"); 
} 

else 
{ 
document.nlForm.submit(); 
} 

} 
//--> 
</script> 

</HEAD> 

<BODY> 

<FORM action="weiter.htm" method="post" name="nlForm" onSubmit="return checkit();"> 

<input type="text" name="feld1"> 
<input type="text" name="feld2"> 

</FORM> 

<A HREF="javaScript:checkAndSend()" class="nav1">Weiter</A> 

</BODY> 
</HTML>


----------



## Sven Mintel (12. August 2004)

```
<FORM action="weiter.htm" method="post" name="nlForm" onSubmit="return checkAndSend();">
```


----------



## Neppo (12. August 2004)

Danke!
Es funktioniert noch nicht ganz. Beim Enter drücken wird jetzt das Formular überprüft. Falls etwas nicht in Ornung ist, dann kommt die Alert-Box - ABER: Das Formular wird trotzdem verschickt!


----------



## Sven Mintel (12. August 2004)

Packe nach jedem alert() .....

```
return false;
```
 hinein...das bricht das Senden ab.


----------



## Neppo (12. August 2004)

Wenn ich das mache, dann wird zu einer leeren Seite gewechselt, auf der nur false steht.


----------



## Quaese (12. August 2004)

Hi,

Du musst in Deiner Funktion boolesche Werte (true/false) zurückgeben, entsprechend,
ob das Formular versendet werden soll (true) oder nicht (false).

```
function checkAndSend(){
    if (document.nlForm.feld1.value == ""){
        alert ("Du hast Feld1 nicht ausgefüllt!");
        return false;
    }else if (document.nlForm.feld2.value == ""){
        alert ("Du hast Feld2 nicht ausgefüllt!");
        return false;
    }else{
        document.nlForm.submit();
        return true;
    }
}
```
Ciao
Quaese


----------



## Neppo (12. August 2004)

Wenn ich auf Enter drücke, dann wird nun alles ornungsgemäß gemacht. Wenn ich auf den Link klicke, dann gelangt man zu einer weißen Seite, auf der False steht (falls ein Feld leer gelassen wurde) ?!


----------



## Quaese (12. August 2004)

Hi,

pass Deinen Link noch an:


&nbsp;&nbsp;<a onclick="checkAndSend();" href="javascript: void(0);" class="nav1">Weiter</a>
 

Ciao
Quaese


----------



## Neppo (12. August 2004)

Jetzt spielt das Formular verrückt:

Wenn ich das einfüge, kommt keine weiße Seite mit fals mehr - ABER:

Drücke ich ENTER: Wird das Formular verschickt -> man wechselt wieder zur Formular-Seite -> das Formular wird nochmal verschickt

Drücke ich den Link: Wird das Formular verschickt -> man wechselt wieder zur Formular-Seite 

Wenn ich im Script das "return true" rausnehme, dann funktioniert das mit dem Enter. Beim Link geschieht das selbe.


----------



## Quaese (12. August 2004)

Hi,

das mit dem mehrfachen Verschicken kann ich hier nicht nachvollziehen.

Den Link solltest Du nochmals anpassen - war mein Fehler.

&nbsp;&nbsp;<a href="javascript: if(checkAndSend() == false){void(0);}else{checkAndSend();};" class="nav1">Weiter</a>
 

Ciao
Quaese


----------



## Neppo (12. August 2004)

Die danke Dir vielmals!

Bin jetzt auch dahinter gekommen, warum merhfach gesendet wurde:

else{
        document.nlForm.submit(); //  <-----
        return true;
    }

Habe "document.nlForm.submit();" entfernt und den Link folgender maßen angepasst:

<A HREF="javaScript: if(checkAndSend() == false){void(0);} else{document.nicknameForm.submit();};" class="nav1">

Jetzt klappt's einwandfrei!


----------

