Formular wird trotz negativer Prüfung gesendet
Claus Peter
- html
0 comunicout0 wahsaga
Hallo,
bei meinem aktellen Projekt bin ich auf folgendes Phänomen gestossen:
Obwohl die Prüfung einer Eingabe mit Return-Taste "false" retourniert, wird das Formular abgeschickt. Sowohl IE als auch Opera verhalten sich da gleich. Nur, erklären kann ich es mir nicht.
Der relevante Teil der Seite schaut so aus:
<form name="Form1" method="POST" action="./isdnacc.htm">
<p>
<input type="submit" value="Übernehmen">
<input type="reset" value="Zurücksetzen">
</p>
<table border="1" width="100%">
<colgroup>
<col width="50%">
<col width="50%">
</colgroup>
<thead>
<tr>
<td><b><i>So Port 1</i></b></td>
<td width="50%"><b><i>Einstellung</i></b></td>
</tr>
</thead>
<tbody>
<tr>
<td><i>Typ/Status</i></td>
<td width="50%"><select name="MODE_0" size="1" onChange="send_Form1()">
<option value="PMP"><i>Mehrgeräteanschluss</i></option>
<option value="PP" selected><i>Anlagenanschluss</i></option>
</select></td>
</tr>
<tr>
<td><i>Stammnummer</i></td>
<td width="50%">
<!-- ************************************************** -->
<!-- hier wird Text eingegeben und mit Enter bestätigt: -->
<!-- ************************************************** -->
<input type="text" size="24" maxlength="24" name="BASE_NR_0" onChange="return ChkFieldIsNum(this.name, pszErrTxtNoNum)">
</td>
</tr>
</tbody>
</table>
.........
<p> </p>
<p> </p>
</form>
</body>
</html>
Wenn ich in dem "BASE_NR_0" Input "return" durch "alert(..)" ersetze, dann liefert die PrüfFunktion definitiv als Ergebnis "false"
Syntaxfehler kann ich auf der Seite keine entdecken.
Trotzdem wird das Form gesendet. Worin liegt der Fehler?
Claus
hi,
pack deine formabfrage in das form-tag und zwar mit onSubmit.
das return muss dableiben. dann sollte es funzen...
mfg
comunicout
Hi,
pack deine formabfrage in das form-tag und zwar mit onSubmit.
das return muss dableiben. dann sollte es funzen...
das funzt zwar, aber genau das wollte ich vermeiden. Im Form werden die Felder dynamisch angelegt, d.h, die Anzahl der Inputs ist variabel.
Eine Funktion CheckForm() müsste daher ebenfalls dynamisch an das Formluar angepasset werden.
Bei anderen Seiten gehts auch ohne "onSubmit", deswegen kann ich mir das nicht erklären. Trotzdem danke für Deine Hilfe.
cp
hi,
Obwohl die Prüfung einer Eingabe mit Return-Taste "false" retourniert, wird das Formular abgeschickt.
<!-- ************************************************** -->
<!-- hier wird Text eingegeben und mit Enter bestätigt: -->
<!-- ************************************************** -->
<input type="text" size="24" maxlength="24" name="BASE_NR_0" onChange="return ChkFieldIsNum(this.name, pszErrTxtNoNum)">
Trotzdem wird das Form gesendet. Worin liegt der Fehler?
in deiner logik.
ein <form> hat die aufgabe sich abschicken zu lassen - davon lässt es sich aber abhalten, wenn eine onSubmit aufgerufene funktion false zurückgibt.
ein input-feld hat aber keine derartige aufgabe - deshalb ist es ihm auch schnurzpiepegal, ob du es vom tun dieser 'nicht-aufgabe' abhalten willst oder nicht.
das <input>-feld bekommt also ein false vor den latz geknallt - damit beeindruckst du es aber kein bisschen.
und wenn du erwartest, dass das input dann sagt, "mit false kann ich nichts anfangen, also gebe ich es mal an meinen vorgesetzten <form> weiter" - dann liegst du leider falsch. denn nicht mal darauf hat das faule inputfeld lust ...
gruss,
wahsaga
ein <form> hat die aufgabe sich abschicken zu lassen - davon lässt es sich aber abhalten, wenn eine onSubmit aufgerufene funktion false zurückgibt.
ein input-feld hat aber keine derartige aufgabe - deshalb ist es ihm auch schnurzpiepegal, ob du es vom tun dieser 'nicht-aufgabe' abhalten willst oder nicht.
das <input>-feld bekommt also ein false vor den latz geknallt - damit beeindruckst du es aber kein bisschen.
und wenn du erwartest, dass das input dann sagt, "mit false kann ich nichts anfangen, also gebe ich es mal an meinen vorgesetzten <form> weiter" - dann liegst du leider falsch. denn nicht mal darauf hat das faule inputfeld lust ...
Hi,
und warum funktionierts dann, wenn im form mehr als ein input Feld enthalten ist? Oder wenn bei auch bei nur einem input-Feld der Absende-Button gedrückt wird?
In diesen Fällen gibts die Fehlermeldung und das form wird nicht abgeschickt. Also tritt das Problem nur bei einem Input-Feld und Return-Taste auf.
Vielleicht kennt ja noch jemand (ausser dem Programmierer des Browsers ;-) den Grund dafür....
oder einen work around (ausser den bereits beschriebenen).....
cp
jaja, der browser spinnt ...
tz.
im zweifelfalle immer gegen den programmierer...!
mfg
comunicout