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.
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).
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%Tags und Links validation jsf jsf-2 primefaces