Vorheriges Thema: Nächstes Thema: |
Autor |
Nachricht |
jsnewusr
Anmeldungsdatum: 28.05.2006 Beiträge: 4
|
Verfasst am: 28.05.2006 15:24:41 Titel: Zwei offene Alert-Fenster |
|
|
Hallo !
In meinem Formular wird ein fehlerhaftes Feld korrigiert (und zwar wiederum fehlerhaft).
Danach wird der Sendebutton gedrückt.
Bei der Felddefinition (<input ...) wird über onChange die Feldprüfung angestoßen.
Die Betätigung des Sendebuttons löst über "onSubmit" eine Formularprüfung aus.
Die Feldprüfung meldet über ein alert-Fenster den Fehler im Feld und
die Formularprüfung meldet über ein zweites Fenster, dass noch Fehler vorhanden sind.
Wenn die Prüfungen nacheinander ablaufen würden, würde ein alert-Fenster geöffnet und das Programm würde erst weiterlaufen, wenn dieses Fenster geschlossen wird.
In Wirklichkeit erscheinen aber beide Fenster am Bildschirm.
Kann es also sein, dass parallel zwei Prüfungen ablaufen (onchange und onSubmit)? Oder woran könnte es sonst liegen ?
Wie kann man diese ggf. synchronisieren ?
Danke für Eure Unterstützung. |
|
Nach oben |
|
|
jsnewusr
Anmeldungsdatum: 28.05.2006 Beiträge: 4
|
Verfasst am: 28.05.2006 21:49:18 Titel: |
|
|
Zur Erläuterung:
Ich habe das Script stark vereinfacht. Wenn man in dem Eingabefeld einen Wert eingibt und dann den Senden-Button drückt,
so gehen zwei alert-Fenster auf. Wenn die Prüfungen nacheinander ablaufen würden, so würde nach meiner Ansicht ein Fenster
aufgehen und das Programm würde erst weiterlaufen, wenn dieses geschlossen wird.
Code: |
<HTML>
<HEAD>
<script type="text/javascript" language="JavaScript">
function formularpruefung(f)
{
// .........
// Fehler
alert("Felder xyz fehlerhaft")
return false
}
function feldpruefung(feld, mb)
{
// .......
// Fehler
alert("Betrag fehlerhaft")
return false
}
</script>
</HEAD>
<BODY>
<form action="feedback.pl" method="post" name="formular"
onSubmit = "return formularpruefung(this)">
<input name='wert' size='6' type='text' onChange="feldpruefung(this,10)"><br>
<input name="senden" value="Eingaben senden" type="submit">
</form>
</BODY>
</HTML>
|
|
|
Nach oben |
|
|
Kambfhase Häufiger Poster
Anmeldungsdatum: 19.03.2006 Beiträge: 235
|
Verfasst am: 29.05.2006 14:01:38 Titel: |
|
|
Natürlich werden zwei Funktionen gleichzeitig ausgeführt, da in dem moment wo du auf Absenden klickst, auch das Inputfeld den Fokus verliert. Deswegen solltest du dich auf eines von beidem beschränken.^^ Such dir was aus.
MfG Kambfhase |
|
Nach oben |
|
|
jsnewusr
Anmeldungsdatum: 28.05.2006 Beiträge: 4
|
Verfasst am: 29.05.2006 14:10:55 Titel: |
|
|
Es ist nach meinem Kenntnisstand üblich, die Felder über onChange zu prüfen und beim Absenden (onSubmit) das gesamte Formular zu prüfen, nämlich Abhängigkeiten der einzelnen Felder (wenn Feld1 angegeben, muss in Feld2 ein Wert > x stehen o.ä.).
Damit kann man nicht ausschließen, dass der Anwender ein Feld korrigiert und dann den Sende-Button drückt, womit der beschriebene Effekt aufträte. |
|
Nach oben |
|
|
Kambfhase Häufiger Poster
Anmeldungsdatum: 19.03.2006 Beiträge: 235
|
Verfasst am: 29.05.2006 16:51:38 Titel: |
|
|
dann erstelle eine globale Variable. diese bekommt einen ähnlichen Namen wie das Feld:
Code: |
var feld1 = false ; |
wenn du nun mit der OnChange-Ãœberprüfung durch bist und sie sagt, dass der Wert des Feldes richtig ist, änderst du die Variable in true:
Code: |
if( ka == Wert)
{
feld1 = true ;
}
else
{
feld1 = false ;
} |
Der Else-Teil ist auch Wichtig, da man sonst erst den richtigen Wert eingeben könnte und dann wieder falsch korrigiern.
In der OnSaubmit-Schliefe musst du dann diese Variable überprüfen:
Code: |
if( feld1 =! true )
{
alert("Bitte ihre eingabe bei Feld1 überprüfen!");
return false ;
} |
Und fertig ist die Laube^^ hoffe es stimmt alles was ich gesagt habe und funktionuckelt auch ... o.0
MfG Kambfhase |
|
Nach oben |
|
|
jsnewusr
Anmeldungsdatum: 28.05.2006 Beiträge: 4
|
Verfasst am: 29.05.2006 19:54:37 Titel: |
|
|
Da die onSubmitprüfung parallel zur onChangeprüfung abläuft, ist die globale Variable nach Korrektur des Feldes von einem korrekten in einen falschen Wert noch nicht auf false gesetzt, wenn sie Submitprüfung ausgeführt wird und der submit wird trotz Fehler ausgeführt.
Ich habe inzwischen festgestellt, dass mein ursprüngliches Programm bei Opera und Microsoft IE funktioniert, bei Netscape und Firefox nicht.
Ich werde daher schweren Herzens alle Prüfungen erst beim Submit durchführen (wie es mir an anderer Stelle empfohlen wurde) |
|
Nach oben |
|
|
Sir Quicksand Häufiger Poster
Anmeldungsdatum: 19.01.2005 Beiträge: 304 Wohnort: Hannover
|
Verfasst am: 31.05.2006 10:33:51 Titel: |
|
|
Wollte ich auch gerade vorschlagen. Was willst du denn wärend der Eingabe prüfen? Ob eine Email Addie richtig ist? Beim ersten Buchstaben bei mir "s" würde schon ein Fehler generiert, obwohl ich noch garnicht richtig fertig bin. Es macht höchstens wärend der Eingabe sinn, wenn Du nur Buchstaben oder Zahlen und keine Sonderzeichen erlauben wolltest.
Noch was, ich finde Alerts scheiße, da man sie wegklicken muß. Macht doch sowas:
<input id=fehler_1 type=text value="Achtung Fehler, mach richtig" style="visibility: hidden">
JS:
if($fehler == true)
{
document.formular.fehler_1.style.visibility = show;
}
ACHTUNG:
Dies soll das Prinzip zeigen. Die Style Argumente noch mal checken. |
|
Nach oben |
|
|
Kambfhase Häufiger Poster
Anmeldungsdatum: 19.03.2006 Beiträge: 235
|
Verfasst am: 31.05.2006 15:39:53 Titel: |
|
|
joa, stimmt^^
@ Qiucksand: Statt Visibility würde ich Display verwenden, dann ist es GANZ weg, allerdings werden darunter liegende objekte neu angeordnet, das ist der Nachteil. Und statt den nerfigen Alerts kann man auch Confirm verwenden. dann kann man das fenster zumindest noch schliessen, was bei Alert nicht geht^^ |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|
|