Die Lösung besteht darin, einfach Ihre Validierung in einer anderen Funktion zu platzieren und sie dann an beiden Stellen aufzurufen.
Also etwas wie:
function validateFields() {
if (document.querySelector('#FirstName').value.length <= 1) {
document.querySelector('#error').innerText = "Bitte geben Sie einen Vornamen ein";
return false;
}
if (document.querySelector('#LastName').value.length <= 1) {
document.querySelector('#error').innerText = "Bitte geben Sie einen Nachnamen ein";
return false;
}
if (document.querySelector('#Phone').value.length <= 1) {
document.querySelector('#error').innerText = "Bitte geben Sie eine Telefonnummer ein";
return false;
}
if (document.querySelector('#Email').value.length <= 1) {
document.querySelector('#error').innerText = "Bitte geben Sie eine E-Mail-Adresse ein";
return false;
}
document.querySelector('#error').innerText = "";
return true;
}
Dann können Sie, wenn es gültig ist, die Aktionen im init genauso aktivieren wie im Paypal-Beispiel:
onInit: function(data, actions) {
// Deaktivieren Sie die Buttons
actions.disable();
// Hören Sie auf Änderungen an der Eingabe
document.querySelector('#userForm input')
.addEventListener('blur', function(event) {
if (validateFields()) {
actions.enable();
}
});
},
Und führen Sie Ihre Validierung auch beim Klick aus
onClick: function(data, actions) {
if (validateFields()) {
return true;
}
document.querySelector('#error').classList.remove('hidden');
}
0 Stimmen
Können Sie die Schaltfläche ausblenden, anstatt sie zu deaktivieren? Oder muss sie angezeigt, aber deaktiviert werden? Es wäre einfacher, sie auszublenden, da die Paypal-Schaltfläche von Paypal stammt.
0 Stimmen
Ich wäre bereit, es zu verstecken, es muss nur unzugänglich sein, bis darauf geklickt wird. Auf der Seite gibt es auch mehrere Paypal-Buttons, daher müssten alle deaktiviert werden.