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

Webform-Fieldset mit input-Elementen clonen - jQuery oder Ajax?

Eingetragen von tetri999 (153)
am 18.07.2014 - 12:09 Uhr in
  • Module
  • Drupal 7.x

Hallo,

Ich habe eine Webform (ein Reservierungsformular), wo der User in einer Selectbox auswählen kann, wieviele Leute er anmelden will (1 bis 20, default:1).
Dann gibt es ein Fieldset mit 3 Textfeldern für jeden Teilnehmer - Vorname, Name und eins für das Geburtsdatum (mit DatePicker).
Bei Änderung der Teilnehmerzahl ( jQuery('select').change ) wird dieses Fieldset per jQuery so oft wie nötig geclont, umbenannt und angehängt:

<fieldset id="webform-component-travelers2" ...>
<fieldset id="webform-component-travelers3" ...>
...
bzw. wenn die Anzahl vermindert wird, werden die überzähligen entfernt (mit remove()).
Das funktioniert, solange ich in dem Formular bleibe und die Anzahl ändere.

das Problem:
Diese Angaben zu den Personen sind Pflichtfelder, d.h. wenn ich das Formular abschicke, wird per Ajax eine Validation durchgeführt und ggf. das Formular neu aufgebaut.
Dann passiert folgendes:
Bei allen Fieldsets stehen in den Inputfeldern die Werte des jeweils letzten Eintrags,
das liegt daran, daß die ID- und name-Attribute der input-Elemente überall die gleichen sind - die des geclonten Fieldsets.
Wenn ich diese Attribute beim clonen auch umbenenne

<input id="edit-submitted-travelers2-fname" name="submitted[travelers2][fname]"> ...
<input id="edit-submitted-travelers3-fname" name="submitted[travelers3][fname]"> ...
...
dann sind die Werte nach dem Ajax-Request völlig verschwunden.

meine Frage:
Offenbar müssen die nötigen Fieldsets über webform_options_form_alter() angelegt werden, damit sie von Dupal bzw. dem Webform-Modul ordentlich registriert werden -
Kann mir jemand erklären, wie das geht oder wo das genauer erläutert wird?
Wie kann ich denn aus jQuery('select').change heraus diese webform_options_form_alter() mit dem Parameter der Anzahl aufrufen und dann die nötige Anzahl der Fieldsets anhängen?

Vielen Dank im voraus für jeden Hinweis - mfG, Michael

‹ Nutzt hier jemand das Modul "Popup" und "Popup Views Integration"? Webform-Fieldset mit input-Elementen clonen - jQuery oder Ajax? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

vielleicht probierst du mal

Eingetragen von caw (2707)
am 18.07.2014 - 15:02 Uhr

vielleicht probierst du mal Webform Add More

C.A.W. Webdesign

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, zu Deiner Frage: Ja Du

Eingetragen von Hyp1 (1461)
am 19.07.2014 - 08:25 Uhr

Hi,

zu Deiner Frage:
Ja Du musst die Form auf der Serverseite modifizieren "webform_options_form_alter()".
So wie es aussieht modifizierst Du die Form nur Clientseitig "jQuery('select').change".

Zitat:

jQuery('select').change heraus diese webform_options_form_alter()

Forms werden normalerweise in Drupal registriert bevor Sie zum Client gesendet werden.

MfG

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, schön -

Eingetragen von tetri999 (153)
am 19.07.2014 - 14:12 Uhr

soweit war ich mit meinen Überlegungen auch schon gekommen.
Die Frage war: wie macht man das?
Wie kann ich clientseitig mit jQuery('select .teilnehmer-anzahl').change serverseitig die Modul-Funktion webform_options_form_alter() aufrufen (Ajax?), und damit dann die Webform-Elemente ergänzen?

@caw:
aus Webform Add More:

Zitat:

Important Note: This module does not dynamically create fieldsets. You must create the maximum number of fieldsets allowed by cloning the original fieldset. Then, the fieldsets are progressively displayed as the Add More button is clicked.

Dazu brauche ich kein extra Modul, das kann ich auch selber machen - eine maximale Anzahl von Fieldsets in der Webform anlegen, und die dann über jQuery('select .teilnehmer-anzahl').change nur anzeigen oder verbergen - das wollte ich aber vermeiden, weil es theoretisch ziemlich viele werden könnten ...

mfG, Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, Du musst einen Ajax

Eingetragen von Hyp1 (1461)
am 19.07.2014 - 13:33 Uhr

Hi,

Du musst einen Ajax Callback für Deine Form verwenden.
Dieser Link sollte Dich auf den richtigen Weg bringen:
http://stackoverflow.com/questions/16808118/trying-to-add-group-of-field...
Unten hat er ein Beispiel Link.

MfG

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Zusätzliche Felder in der Userliste
  • Drupal 8 - Datenbank Mindmap
  • Buch: Mastering Drupal 8 Views!
  • The website encountered an unexpected error. Please try again later.
  • Drupal 8: Modul gesucht - Hervorhebung wichtiger Inhalte
  • Drupal 8: Modul prevnext
  • Verwirrung / Unterstützung
  • Vom jeweiligen User die Kunstwerke ausgeben.
  • Problem mit der Readiness für Automatic Updates
  • Multidomain
  • [gelöst]Drupal 8: Fußzeilenmenü auf Login-Seite verschwunden
  • Fullcalendar - Grösse Dialogfenster
Weiter

Neue Kommentare

  • Ja, danke! Ich habe dieses
    vor 1 Tag 8 Stunden
  • Die View heißt "Benutzer". Du
    vor 1 Tag 20 Stunden
  • Danke! Was meint denn
    vor 2 Tagen 2 Stunden
  • Dazu brauchst Du kein Modul,
    vor 2 Tagen 2 Stunden
  • Das heißt in dem Fall, daß
    vor 2 Tagen 2 Stunden
  • Voaraussetzung sind
    vor 2 Tagen 2 Stunden
  • Huhu, also in der
    vor 2 Tagen 3 Stunden
  • Das Problem ist, dass nicht
    vor 2 Tagen 4 Stunden
  • Ohne Composer ist der Betrieb
    vor 2 Tagen 4 Stunden
  • Kann gut sein, aber ohne
    vor 2 Tagen 4 Stunden

Statistik

Beiträge im Forum: 246347
Registrierte User: 18915

Neue User:

  • Enriqueemunc
  • Tulsa55
  • Elisаhaf

» Alle User anzeigen

User nach Punkten sortiert:
wla9045
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3919
ronald3834
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 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