PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : enter-taste "abfragen"


gerhard
06.08.2004, 15:48:35
hallo leute -

ich möchte gerne in einem html-formular mittels javascript verhindern, dass das formular vorzeitog abgeschickt wird ...

anders gesagt: manche user geben das erste feld des formulars und drücken (als eingabebestätigung) die enter-taste --> und wollen ins zweite feld. anstatt ins zweite feld zu gelangen. statt dessen wird das (dann ja unvollständig ausgefüllte) formular abgeschickt.

wie verhindere ich das?

wie also stelle ich sicher, dass erst beim klick auf den button "senden" (oder wenn alle felder ausgefüllt sind) das formular abgeschickt wird?

klar: mit dem handler "onSubmit" --> nur: wie unterscheide ich, ob der user jetzt die enter-taste gedrückt hat (und gar nicht abschicken wollte) oder ob er auf den button "senden" geklickt hat (auch dann, wenn er gar nciht alle felder ausgefüllt hat, weil er z.b. eines davon bewußt frei gelassen hat)???

gibt es eine möglichkeit, bei diesem "onSubmit" abzufragen, welche taste zuletzt gedrückt wurde und wenn ja, wie frage ich ab, ob das die enter-taste war??

Usul
06.08.2004, 16:21:48
onSubmit ist korrekt.

Zur Unterscheidung: Einfach keinen "submit" button einbauen. Stattdessen einen normalen type="button" button mit onClick="foo()" und bei foo() dann per form.submit() das formular abschicken (oder ne variable setzen damit onSubmit() weiss das per button geschickt wird).

Obwohl, eigentlich koennte ein OnClick() ja glaube ich auch bei nem type="submit" button stehen und dann auch ne variable setzten.

probier halt rum.

Jürg
06.08.2004, 18:01:22
Mach doch so etwas:
function testeFeedback(){
var formular = document.forms['meldung']; // kuerzt Namen zu formular
if (formular.name.value == "" ||
formular.vname.value == "" ||
formular.ort.value == "" ||
formular.beitrag.value == ""){
alert("Bitte alle Felder mit * ausfüllen!");
document.forms['meldung'].name.focus();
return false;
}
}
--------------------------------------
<form method="post" action="<?php echo $PHP_SELF; ?>" onsubmit="return testeFeedback()" name="meldung">

<table>
<tr>
<td><p>Nachname * &nbsp;</p></td>
<td><input type="text" name="name" size="40" tabindex="1" /></td>
</tr>
<tr>
<td><p>Vorname *</p></td>
<td><input type="text" name="vname" size="40" tabindex="2" /></td>
</tr>
<tr>
<td><p>Ort * </p></td>
<td><input type="text" name="ort" size="40" tabindex="3" /></td>
</tr>
<tr>
<td><p>E-Mail</p></td>
<td>
<input type="text" name="email" size="40" onblur="eMailAdresseOK(this)" tabindex="4" />
</td>
</tr>
<tr>
<td valign="top"><p>Beitrag * </p></td>
<td><textarea rows="9" name="beitrag" cols="50" tabindex="7"></textarea></td>
</tr>
</table>

<input type="hidden" name="woher" value="Feedback" />
<p>
<input class="norm" type="submit" name="submit" value="Abschicken" tabindex="6" />
<input class="norm" type="reset" name="reset" value="Zurücksetzen" />
</p>

</form>