[gelöst] D-7.23 Problem mit webform - fieldset - ajax
Eingetragen von tetri999 (153)
am 01.09.2013 - 16:49 Uhr in
am 01.09.2013 - 16:49 Uhr in
Hallo,
nach Aktualisierung von D 7.22 auf 7.23 hatte ich folgendes Problem:
In einer webform (als block eingebaut) gibt es zwei fieldsets ("links" und "rechts"),
die webform wird per AJAX submitted, d.h. wenn Pflichtfelder nicht ausgefüllt sind, wird sie nochmal mit den entsprechenden error-Markierungen geladen.
Nach dem AJAX-Aufruf heißen die erzeugten DIV-Bezeichner nun aber plötzlich
edit-submitted-links-2 und
edit-submitted-rechts-2
- d.h. mein CSS-styling stimmt nach dem AJAX-Aufruf nicht mehr !
Nach der Wiederherstellung von D 7.22 ist alles wieder OK.
Hat jemand eine Idee, woran das liegt? Sollte das ein 7.23-bug sein?
Michael
- Anmelden oder Registrieren um Kommentare zu schreiben
Zitat: hatte ich folgendes
am 01.09.2013 - 16:57 Uhr
hatte ich folgendes Problem
Wenn Du das Problem gehabt hast ist es ja wohl gelöst. Dann kannst Du den Thread ja entsprechend markieren.
vielleicht hast du gelesen,
am 01.09.2013 - 17:07 Uhr
daß ich das Problem gelöst habe, indem ich die alte Drupalversion wiederhergestellt habe,
ich würde aber gerne auf dem aktuellen Stand bleiben.
Vielen Dank für den heißen Tipp.
Zitat:Sollte das ein
am 01.09.2013 - 17:21 Uhr
Sollte das ein 7.23-bug sein?
Bug wuerde ich es nicht nennen wollen.
Da ist der 7.22 Zustand schon eher buggy. Wieso?
Na als Bsp. Du hast links einen weiteren Webform Block. Der arbeitet dann auch mit der Klasse edit-submitted. Was passiert dann bei beiden linken Bloecken wenn die Validierung in EINEM Block Alarm schlaegt? Mal probiert?
Wer oder was erzeugt die Bloecke?
Ist da Views im Spiel?
erzeugt wird der Block vom
am 01.09.2013 - 17:28 Uhr
erzeugt wird der Block vom Webform-Modul:
- form-settings - erweiterte Einstellungen - available as block
sowie AJAX-mode aktiviert
eingebaut hab ich das Formular in einer eigenen contentType.tpl.php so:
$form = module_invoke('webform', 'block_view', 'client-block-ID');
print $form['content'];
das views-Modul ist hier nicht im Spiel.
7.23-konform machen
am 01.09.2013 - 18:08 Uhr
Da bei 2 Bloecken der CSS Code fuer die Validierung nicht so gewaltig sein kann ist der Weg des geringsten Widerstand, ihn 7.23-konform zu machen.
also nochmal:
am 02.09.2013 - 09:29 Uhr
es geht hier nicht um zwei verschiedene Webform-Blöcke, sondern um eine Webform mit zwei fieldsets - einzig zu dem Zweck, das Formular besser stylen zu können.
Das Webform-Modul erzeugt HTML, das etwa so aussieht:
<form id="webform-client-form-64" class="webform-client-form" ... >
<fieldset id="edit-submitted-links" class="webform-component-fieldset ... >
<div id="webform-component-links--name" ... >
<input id="edit-submitted-links-name" ... >
... [ weitere Felder links ]
</fieldset>
<fieldset id="edit-submitted-rechts" class="webform-component-fieldset ... >
<div id="webform-component-rechts--message" ... >
<textarea id="edit-submitted-rechts-message" ... >
... [ weitere Felder rechts ]
</fieldset>
</form>
Die Input-Felder müssen alle einzeln gestyled werden - über die erzeugten IDs: webform-component-links-name, edit-submitted-rechts-message usw...
Nach einem AJAX-Request heißen die aber jetzt edit-submitted-links-name--2, edit-submitted-rechts-message--2 usw...
Und nach jedem weiteren AJAX werden diese angehängten Ziffern um eins erhöht: edit-submitted-links-name--3, edit-submitted-links-name--4 ...
Und das passiert nur unter 7.23 und nur im Zusammenhang mit fieldsets - nicht unter 7.22, d.h. der 7.22-Zustand kann ja wohl nicht buggy sein.
Dann darfst Du das CSS eben
am 02.09.2013 - 10:06 Uhr
Dann darfst Du das CSS eben nicht an den sich ändernden IDs festmachen, sondern mußt nach Klassen suchen, die sich nicht verändern. Vielleicht sind auch "Selektorketten" dazu nötig. Einfach die Datenstruktur noch mal genau durchsehen.
Beste Grüße
Werner
schon weniger mißverständlich
am 02.09.2013 - 10:45 Uhr
es geht hier nicht um zwei verschiedene Webform-Blöcke ...
Nun kommt das Problem schon weniger mißverständlich rüber.
Leider hast Du im geposteten code die Klassen der Fieldsets beschnitten - so kann man nix erkennen. Ist aber nicht das Problem.
Wie wla schon sagte. Mit Sicherheit ist dies der Weg das Problem zu loesen.
Alternativ gibt noch die Moeglichkeit des Substring matching (Ist Glatteis wenn man CSS 3 matching verwendet).
Aber auch damit - CSS anpassen als Loesung bleibt.
das ist mal ein hilfreicher Hinweis!
am 02.09.2013 - 11:57 Uhr
Substring matching kannte ich nicht - das ist die Lösung.
@wla: mit Selektorketten arbeite ich ohnehin, geht ja gar nicht anders - das Problem ist, daß in den entscheidenden Selektoren immer diese AJAX-Hochzählung auftaucht,
aber mit diesem Substring matching kann man das ja umgehen.
Vielen Dank,
mfG, Michael
Es gibt auch den (direkt)
am 02.09.2013 - 12:06 Uhr
Es gibt auch den (direkt) Child-Selektor '>', den man mitunter nutzbringend einzetzen kann.
Beste Grüße
Werner