JSF: Wie wird das Formular gesendet, wenn die Eingabetaste gedrückt wird?

8

Es scheint eine einfache Anforderung zu sein, aber ich habe noch keine einfache Lösung gefunden:

In einer JSF 1.2 / Richfaces 3.3 Webapp habe ich ein Formular mit Eingabekomponenten verschiedener Typen, gefolgt von einem <a4j:commandButton> und einem <h:commandButton> . Der erste setzt das Formular zurück, der zweite führt eine Aktion mit den eingegebenen Daten aus.

Mein Ziel ist es, dass diese Aktion ausgelöst wird, wenn der Benutzer während der Dateneingabe die Eingabetaste drückt. Wie kann ich das tun?

Bearbeiten : Im Allgemeinen habe ich mehr als ein <h:commandButton> pro <form> . Ich möchte eine bestimmte als Standardaktion festlegen. Außerdem möchte ich, dass die Lösung mit AJAX (die wir häufig verwenden) gut spielt.

    
meriton 04.03.2011, 18:57
quelle

5 Antworten

0

Im Nachhinein ist die Lösung dieses Problems mit den Mitteln, die HTML bietet, viel weniger spröde und leichter zu pflegen, wie die Antworten auf die folgende verwandte Frage zeigen:

Mehrere Übergabeschaltflächen im HTML-Formular - bestimmen Sie eine Schaltfläche als Standard

    
meriton 26.10.2012, 16:30
quelle
8

Wenn Sie nicht den MSIE-Browser verwenden und in Wirklichkeit nur ein Eingabefeld ohne Schaltfläche verwenden, sollte dies nur das Standardverhalten sein. Sonst hat wahrscheinlich ein (automatisch generierter) JS-Code es vermasselt.

Wenn Sie keine TextAreas im Formular haben, wäre eine einfache Lösung die folgende:

%Vor%

Oder wenn Sie textareas haben und nicht dieselben keypress -Funktionen über alle Nicht-Textarea-Eingabeelemente wiederholen möchten, führen Sie das folgende Skript während des Fenster-Onloads aus.

%Vor%     
BalusC 04.03.2011 19:12
quelle
6

Aufbauend auf der Antwort von BalusC habe ich folgendes gefunden (getestet auf IE und FireFox):

%Vor%

wobei ifEnterClick definiert ist durch:

%Vor%

Bearbeiten : Wenn Sie einen Wert aus der automatischen Vervollständigung des Firefoxformulars mit der Eingabetaste auswählen, wird ein Keydown-Ereignis ausgelöst, aber kein Tastendruckereignis. onkeypress ist dem onkeydown vorzuziehen.

    
meriton 07.03.2011 13:21
quelle
2

Fügen Sie diesen Code einfach in Ihre JS-Datei ein:

%Vor%     
Rajat Gupta 04.10.2012 05:30
quelle
0

Verwenden Sie die PrimeFaces-Komponente:

%Vor%

Verwenden Sie dies in Kombination mit einer Fokuskomponente und Sie werden rocken!

%Vor%     
Dimitri Dewaele 12.03.2015 10:13
quelle

Tags und Links