Zum Inhalt springen

TCA select Feld mit eigener onchange-funktion versehen/erweitern

Erstellt am 19. Juli 2014 · 4 Antworten · letzte Antwort am 26. Juli 2014

Tags: TCA, JavaScript & AJAX, TYPO3 6.x, Frage

fastmotion ·

Ich würde gerne in einer von uns realisierten Extension innerhalb einer Maske (Table) ein eigenes Javascript integrieren, was bei einem spezifischen select Feld per onchange-Trigger eine Funktion auslöst, welche den gerade gewählten Wert an ein php-script übermittelt, in dem der wert verarbeitet und das Ergebnis in ein weiteres Maskenfeld (Input date) geschrieben wird. Leider ist bei den Select-Feldern default-mäßig schon ein onchange definiert und wir finden keinen Weg, diesen zu erweitern. Würde mich über konkrete Ansätze sehr freuen.

Eingesetzte Typo3-Version: 6.2.3

volk0r ·

hi,

was genau hast du vor? weil ein "refresh" des backends beim ändern eines selectfeldes ist möglich. in einem anderen feld deines tca kannst du dann den selektierten wert deines selectfeldes auslesen. notfalls mit einer userfun.

mit einem requestUpdate auf das jeweilige feld kannst du eben ein refresh der seite forcieren.

// hier wird ein request update auf die felder sys_language_uid, categories und listtype forciert.
$TCA['tx_gdicbpdb_domain_model_ethdb']['ctrl']['requestUpdate'] = "sys_language_uid,categories,listtype";

innerhalb deines tca kannst du dann auf verschiedene marker zugreifen. ob die dir dabei helfen weiss ich natürlich nicht.

$TCA['tx_gdicbpdb_domain_model_ethdb']['columns']['categories']['config']['foreign_table_where'] = ' AND sys_language_uid = ###REC_FIELD_sys_language_uid###';

wenn dir das nicht reicht, kannst du deinem tca eintrag eine userFunction mitgeben, die dir dann das gewünschte ergebnis liefert.

hoffe halbwegs geholfen zu haben. lg, volker.

fastmotion ·

Vielen Dank für deinen Ansatz.
Um mal konkreter zu werden:

Innerhalb der Maske existieren 2 voneinander abhängige Felder
Feiertag (Select - Bsp. "Ostern")
Feiertagsdatum (Input Date)

Nun soll, sobald der Feiertag gewählt wurde, über eine Formel das passende Datum berechnet und im Feld Feiertagsdatum eingesetzt werden.
Das Feld "Feiertag" besteht aus Datenbankeinträgen, welches noch um ein Dummy-Feld "Bitte wählen Sie einen Feiertag" ergänzt werden muss, um den requestUpdate-Mechanismus auch auslösen zu können.

volk0r ·

ok, genau das lässt sich dann damit erreichen. für das format deines nächsten input feldes müsstest du aber vermutlich eine userfunction schreiben.

fastmotion ·

vielen Dank noch einmal für den Tipp mit dem "requestUpdate". Mein Konstrukt besteht nun aus insgesamt 3 Feldern.

1. Feld: Select -> mit Wahl des Feiertags
2. Feld: User -> berechnet das jeweils passende Feiertagsdatum
3. Feld: Datum -> erlaubt dem Benutzer ein spezifisches Datum zu setzen, sollte die Berechnung inkorrekt sein

Hier ergibt sich derzeit noch ein großer Wunsch:

Ich möchte mir gerne das User-Feld (2. Feld) sparen und dynamisch nach JS-Confirm (Ein neuer Feiertag wurde gewählt. Wollen Sie das Datum neu berechnen?) nur das 3. Feld setzen. Deshalb auch der Wunsch nach einem Ajax-"RequestUpdate", da die Maske unter anderem auch sehr groß ist und wegen UserLabels und entsprechender Joins relativ lange (bis 5 Sekunden) pro Reload in Anspruch nimmt.