# JSF - clientseitige Validierung mit Javascript?



## jelly (18. Okt 2006)

Hallo,

ist es bei JSF möglich Formulardaten clientseitig via Javascript zu validieren? Irgendwie hänge ich da denn es geht nicht. Soll heißen die Validierung findet statt aber das Formular wird trotzdem submitted. Bin ich gezwungen auf serverseitige Validierung um zu steigen? Beim googlen find ich immer nur Infos über die JSF-eigene Validierung...

Wäre für Hilfe wirklich dankbar.
jelly


----------



## HLX (18. Okt 2006)

Sollte eigentlich kein Problem sein. Ist schließlich alles JSP.

Wo genau ist dein Problem?


----------



## jelly (18. Okt 2006)

Hallo,

das Problem liegt darin, dass ich wenn ich ein Formular habe welches ich mittels JS validieren will, den Aufruf mittels
<h:commandButton action... value="abschicken"  onclick="meinJS();" /> oder direkt im Formular-Tag <h:form onsubmit="meinJS();"> aufrufe. Bei beiden ansätzen wird zwar validiert, aber wenn man ne Fehlermeldungbekommt weil ein Feld im Formular falsch ausgefüllt ist und man dies bestätigt, dann wird das Formular trotzdem abgeschickt. Sprich die nächste Seite wird aufgerufen (und somit auch alle Bean-Methoden die dazwischen hängen). 

Ich hab es jetzt so gelöst, dass ich mit meinem "abschicken"-Button nur das JS aufrufe und wenn die Validierung erfolgreich war durch das JS ein zweiter unsichtbarer Button angesteuert wird der dann die action auslöst und das Formular abschickt.

Aber irgendwie ist das auch nur so ne Schmuddellösung...so recht zu frieden bin ich damit nicht. Aber es funktioniert.
Man hat halt scheinbar keine Möglichkeit "normal" den Submit des Formulars zu unterbinden, wenn man das JS direkt beim Click des Abschick-Buttons aufruft. 

Falls es doch noch eine saubere clientseitige Lösung gibt, bin ich nach wie vor interessiert.

jelly


----------



## miketech (19. Okt 2006)

Hi,

versuch mal:

onSubmit="return DeineFunktion();"

Und wenn die Validierung fehlschlägt, gibst Du in "DeineFunktion" "false" zurück.

Gruß

Mike


Edit: Hier habe ich nochmal einen Link gefunden, der Dir helfen sollte:

http://www.irt.org/script/155.htm


----------



## jelly (19. Okt 2006)

Hallo



> versuch mal:
> 
> onSubmit="return DeineFunktion();"



äh...hab ich nicht in meinem letzten Posting geschrieben das ich das getan habe? Und ob du da false zurückgibst interessiert JSF herzlich wenig. Es wird trotzdem gesendet.

gruß,
jelly


----------



## HLX (19. Okt 2006)

Nein, du hast geschrieben:

onSubmit="DeineFunktion();" 

Miketech meint:

onSubmit=" *return* DeineFunktion();"


----------



## jelly (19. Okt 2006)

Hallo nochmal,

okay...ich war wohl etwas zu faul mich vollständig auszudrücken  :wink: 
Ich habe es sowohl mit als auch ohne return versucht. Das Problem bei JSF scheint zu sein, das wenn man besagten JSF-Button ala <h:commandButton value="send" action="#bean.tuIrgendwas" /> hat, kann man nur das onclick-event im Button verwenden, onsubmit ist nicht erlaubt. Onsubmit ist dafür aber im <h:form ...> tag erlaubt. JSF scheint aber beim Drücken des Button das Formular sofort abzuschicken ohne sich darum zu kümmern was beim onsubmit im Formular-tag passiert...

Wie gesagt mit dem unsichtbaren Button kann man das umgehen, aber ich finde es nicht so optimal...

gruß,
jelly


----------



## miketech (19. Okt 2006)

Hi, 

dann versuch das, was ich geschrieben habe im onClick-Event:

http://wiki.apache.org/myfaces/JavascriptWithJavaServerFaces



> <h:commandButton id=”btnCancel” value=”Cancel”
> onclick=”if (!confirm('You will lose all changes made. Are you sure?')) return false"
> />
> 
> Here the commandButton is rendered as a HTML submit button. If the javascript block returns true then the form is submitted as usual. If it returns false then the form submission is aborted.



Gruß

Mike


----------



## jelly (19. Okt 2006)

Hallo nochmal,

super so funktionierts endlich.

danke euch...
jelly


----------

