Deaktiviert die Befehlsschaltfläche, wenn die inputText-Validierung fehlschlägt oder der Ajax-Aufruf beginnt

8

Ich habe den folgenden Code in einem Formular:

%Vor%

Die Überprüfungsmeldungen funktionieren also gut auf dem inputText -Element. Die Schaltfläche "Senden" erstellt jedoch immer noch eine AJAX-Anforderung, wenn sie angeklickt wird, obwohl die Eingabe ungültig ist. Ich möchte, dass die Ajax-Anfrage gesendet wird, wenn der Eingabetext gültig ist.

Wie mache ich das?

Außerdem; In einem anderen Fall möchte ich den Button deaktivieren. Dies ist der Fall, wenn inputText validiert wird und der Benutzer auf die Schaltfläche klickt. Der Grund dafür ist, ich möchte nicht, dass der Benutzer versehentlich Anfragen überflutet. (d. h. wiederholt den Senden-Button drücken)

Derzeit zeigt die JavaScript-Funktion handleOnclick nur ein modales Dialogfeld an, in dem "warte" steht. Da dieser Dialog modal ist, kann auf den Hintergrund nicht zugegriffen werden. Dies verhindert jedoch immer noch nicht, dass der Benutzer es wiederholt drückt, da 1 Sekunde zwischen dem Anzeigen eines Klicks und dem Modaldialog verstreicht. Außerdem; Dieser Ansatz verhindert nicht die Übermittlung ungültiger Daten. Was kannst du vorschlagen?

Ich benutze JSF2.0 und Primefaces 3.0.

Jede Hilfe wird geschätzt.

    
Murat Derya Özen 16.01.2012, 21:55
quelle

1 Antwort

14

Sie können dafür das Attribut disabled der Schaltfläche verwenden. Setzen Sie es einfach auf true , wenn FacesContext#isPostback() gibt false zurück (also, es ist eine erste Anfrage), oder wenn es true ist (also, eine Formularübergabe ist aufgetreten), dann überprüfe, ob FacesContext#isValidationFailed() gibt true zurück (daher ist die Validierung im Allgemeinen fehlgeschlagen).

%Vor%

Sie müssen nur sicherstellen, dass Sie die Schaltfläche auch bei AJAX-Anforderungen aktualisieren, damit sie bei Bedarf entweder wieder aktiviert oder deaktiviert wird.

%Vor%     
BalusC 17.01.2012, 03:29
quelle

Tags und Links