Problem:

Wer eine eigene Komponente schreibt, die auch im Administrations-Bereich Formulare bereit stellt, kommt evtl. mal an den Punkt, dass er die Eingaben vor dem Submit (per Klick auf "Speichern") überprüfen möchte.

Der übliche Weg per <form [...]  onsubmit="return formText();"> funktioniert bei Joomla-Admin-Formularen nicht, sobald man die Buttons oben links nutzen möchte.

Lösung:

Das Hauptproblem bildet das Joomla eigene JavaScript welches ausgeführt wird, wenn man auf den Save-Button klickt. Dabei wird zwar der Code von onsubmit ausgeführt aber der Return-Code (Boolean-Wert) unbeachtet gelassen und dennoch der Task save aufgerufen.

Um diesen Vorgang zu verhindern muss man die Joomla-JS-Routine submitbutton() "überschreiben". Am besten im View-Template selbst.

<script type="text/javascript">
// Override Joomla-Function
function submitbutton(pressbutton) {
if (pressbutton == 'cancel') {
submitform(pressbutton);
return;
}
//validate routine
var form = document.adminForm;
var chk = ...;
if (chk == 0) { // 0=OK
submitform(pressbutton);
} else {
alert('' );
}
}
</script>

Erst wird getestet ob der 'Cancel'-Button gedrückt wurde. Denn dann muß keine Verifizierung stattfinden. (Wer mehr Buttons mit unterschiedlichen Funktionen hat, sollte diesen Teil überarbeiten.)
Wie die Überprüfung der Daten aussieht, lass ich hier mal außen vor. Ich nutzte meistens statt einem Boolean einen Integer-Wert, da es häufig vorkommt, dass unterschiedliche Fehler auftauchen und unterschiedliche Meldungen dazu ausgegeben werden sollen.

Kategorien:

Stichwörter:

joomla · administrator · extension · komponente · components · submit · onsubmit · validation · validation · überprüfen ·