Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Einem Formularfeld AJAX hinzufügen

Eingetragen von Micha1111 (290)
am 16.02.2011 - 22:36 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Ich habe ein eigenes Modul erstellt, dass einen neuen Inhaltstypen erstellt und diesem dann die Felder verein_name und verein_kurzname hinzufügt.
Dies geschieht über die Moduldatei verein.install
Bis hierhin ist die Dtei verein.module einfach nur leer.

Es funktioniert auch, denn ich kann anschließend einen entsprechenden Node über "Inhalt hinzufügen" erzeugen.

Nun wollte ich das Eingabeformular insofern abändern, als ich dem Feld verein_name die AJAX-Funktionalität hinzufügen wollte.
Wird ein Name im entsprechenden Feld eingetragen, soll sich die Beschreibung des Feldes für den Kurznamen entsprechend anpassen.
Der Code dafür stammt aus dem Modul "examples"

Geht auch, ich habe den folgenden Code in die Datei verein.module eingefügt:

function verein_form_alter(&$form, &$form_state, $form_id) {

switch ($form_id) {
   
case 'verein_node_form':

$form['verein_name'] = array(
'#type' => 'textfield',
'#title' => t('Vereinsname'),
'#weight' => -4,
'#ajax' => array(
'callback' => 'verein_simplest_callback',
'wrapper' => 'replace_meldung_div',
),
);

$form['verein_kurzname'] = array(
'#type' => 'textfield',
'#title' => t('Kurzname'),
'#description' => '',
'#weight' => -3,
'#prefix' => '<div id="replace_meldung_div">',
                '#suffix' => '</div>',
);
   
if (!empty($form_state['values']['verein_name'])) {
    $form['verein_kurzname']['#description'] = t('der lange Name lautet:').  " '{$form_state['values']['verein_name']}'";
    }

break;

}
}


function verein_simplest_callback($form, $form_state) {
  // The form has already been submitted and updated. We can return the replaced
  // item as it is.
  return $form['verein_kurzname'];
}

Im Grunde führe ich also ein hook_form_alter() im selben Modul aus.
Das klappt, weil Drupal 7 intern schon vorher das Standardformular generiert haben muss.

Beim Verlassen des Feldes "verein_name" durch drücken der Taste "Tab" wird AJAX gestartet und die Beschreibung des Feldes "verein_kurzname" ändert sich.
Allerdings geht der Fokus zu diesem Feld verloren => der Curser hängt im luftleeren Raum, statt im Feld "verein_kurzname"
Anschließend klicke ich in das Feld "verein_kurzname" und gebe ihn ein.

Dann klicke ich auf die Schaltfläche speichern, erhalte jedoch die ziemlich kryptische Fehlermeldung lt. Anhang.
Irgendetwas scheint zu fehlen, oder es ist ein BUG.

Bin für jeden Hinweis dankbar.

‹ Formular(-feld) neu aufbauen nach Änderung (hook_form_alter) drupal 7 php snippet: Code-Optimierung & Fragen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hier noch die Fehlermeldung

Eingetragen von Micha1111 (290)
am 16.02.2011 - 22:38 Uhr

Hier noch die Fehlermeldung als Screenshot

AnhangGröße
fehlermeldung.JPG 77.7 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Inzwischen kann ich sagen,

Eingetragen von Micha1111 (290)
am 19.02.2011 - 18:07 Uhr

Inzwischen kann ich sagen, dass es nichts mit Ajax zu tun.

Die Fehlermeldungen kommen immer, wenn ich ein Formularfeld mit hook_form_alter() ändere.

Außerdem kann ich gar nicht alle Elemente ansprechen, wenn ich nicht das ganze Formularfeld ersetzen möchte, sondern nur einen bestehenden Wert ändern will.
z.B. geht:
$form['verein_name']['#weight'] = -3;
Die Gewichtung wird im Formular auf -3 geändert

z.B. geht nicht:
$form['verein_name']['#description'] = t('Test');
wird einfach ignoriert

Könnte jemand ein Beispiel posten, wie es in Drupal 7 geht ?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hat's noch keiner versucht ?

Eingetragen von Micha1111 (290)
am 02.03.2011 - 18:08 Uhr

Hat's noch keiner versucht ?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ein Syntax-Detail

Eingetragen von PHILIPP-SCHAFFNER.CH (81)
am 01.04.2011 - 11:16 Uhr

Hey @Micha1111! Gibt es einen Grund für die unten stehende Schreibweise?:

Micha1111 schrieb

$form['verein_kurzname']['#description'] = t('der lange Name lautet:'). " '{$form_state['values']['verein_name']}'";

Reicht denn nicht einfach:

$form['verein_kurzname']['#description'] = t('der lange Name lautet:'). $form_state['values']['verein_name'];

Nur so ein Detail.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Best Practices for Plain Text Notes
  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 2 Tagen 6 Stunden
  • Guten morgen und Danke
    vor 2 Tagen 13 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 2 Tagen 19 Stunden
  • Danke Schmittrich. Die Frage
    vor 4 Tagen 10 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 4 Tagen 13 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 2 Tagen
  • Vielen Dank für Ihren
    vor 6 Wochen 5 Tagen
  • Composer ist sehr ratsam
    vor 6 Wochen 6 Tagen
  • Vielen Dank für den
    vor 7 Wochen 2 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250324
Registrierte User: 20571

Neue User:

  • alxshell
  • FesObsemo
  • AnthonyhoF

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 20 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association