fieldset 'collapsed' nicht
am 05.02.2009 - 12:26 Uhr in
Hi Leute,
bin ein absoluter Newbie bezüglich Drupal und auch hier im Forum.
Daher bitte nicht so ernst nehmen, falls ich diesen Thread im falschen Forum gepostet habe. ;)
Habe auch schon nach meiner Problemstellung/Lösung gesucht, aber nichts äquivalentes gefunden.
Vielleicht könnt ihr mir ja helfen.
Es geht um folgendes:
Ich habe eine fieldset/Eingabemaske, welches zunächst -nach Erstaufruf der Seite- versteckt erscheint.
Nach Klick auf den Titel öffnet sich das fieldset.
Soweit so gut, es sollte sich bei erneutem Klick, wenn es geöffnet ist, auch wieder schließen.
Ich habe schon eine Weile recherchiert und festgestellt, dass hierfür wohl eine Javascript-Funktion
in der collapse.js zuständig ist. Zumindest soweit ich das verstanden habe.
Hier erstmal der Code meines fieldset-tags:
<fieldset class="group-kontakt-des-anbieters-nd collapsible collapsed"><legend>
Wie ich es sehe, hängt wohl alles vom Vorhandensein des collapsed ab.
Entferne ich dieses, öffnet sich das fieldset und vise versa.
Im angesprochenen Javascript-Code müßte es an folgender Stelle liegen, bin aber nicht ganz sicher:
27 else
{
28 var content = $('> div', fieldset).slideUp('medium', function()
{
29 $(this.parentNode).addClass('collapsed');
30 this.parentNode.animating = false;
31 });
32 }
Ich komme nicht mehr weiter und kann mir keinen Reim darauf machen.
Hier möchte ich die Profs fragen, woran es liegen kann, dass ein fieldset sich nach erneutem/zweitem Klick nicht wieder schließt? Gibt es vielleicht eine Konfiguration irgendwo?
Beste Grüße und Danke im Voraus
Andreas
- Anmelden oder Registrieren um Kommentare zu schreiben
live
am 05.02.2009 - 13:43 Uhr
Moin!
Kann man sich das mal irgendwo in echt anschauen?
Installier Dir mal für Deinen Firefox die Erweiterung "Firebug", dann kannst Du auch sehen, ob evtl. Javascript-Fehler erscheinen.
Es sieht halt so aus, als wenn der Selektor (der das Fieldset auswählt im JS; direkt über dem von Dir geposteten Codeausschnitt) nicht mehr greift und das geöffnete Fieldset nicht mehr selektieren kann. Ohne draufzuschauen, kann ich das jedoch nur vermuten.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hi live, jo, FireBug hatte
am 05.02.2009 - 17:27 Uhr
Hi live,
jo, FireBug hatte ich bereits. Darüber hatte ich auch das mit der CSS-Klasse collapse herausgefunden (und anderes)
Leider kann ich vom System keinen Live-Einblick gewähren.
Ich habe allerdings bereits experimentiert.
Das Interessante ist, dass diese Javascript-Funktion in der collapse.js
Drupal.toggleFieldset = function(fieldset) {
if ($(fieldset).is('.collapsed')) {
var content = $('> div', fieldset).hide();
$(fieldset).removeClass('collapsed');
content.slideDown(300, {
complete: function() {
// Make sure we open to height auto
$(this).css('height', 'auto');
Drupal.collapseScrollIntoView(this.parentNode);
this.parentNode.animating = false;
},
step: function() {
// Scroll the fieldset into view
Drupal.collapseScrollIntoView(this.parentNode);
}
});
if (typeof Drupal.textareaAttach != 'undefined') {
// Initialize resizable textareas that are now revealed
Drupal.textareaAttach(null, fieldset);
}
}
else {
var content = $('> div', fieldset).slideUp('medium', function() {
$(this.parentNode).addClass('collapsed');
this.parentNode.animating = false;
});
}
}
beim ersten Aufruf ganz normal durchlaufen wird und auch dafür sorgt, dass eben das fieldset geöffnet wird.
Beim nächsten Klick auf den Titel des fieldsets, wird a) das fieldset nicht wieder geschlossen und b) die Funktion Drupal.toggleFieldset garnicht mehr aufgerufen. :-/
(letztganntes habe ich einfach über einen alert() herausgefunden)
Dieser Effekt tritt auf unserem System übrigens in sämtlichen gängigen Browsern IE7, FF3.0.6 und Safari(@Vista) auf.
live, aufgrund der o.g. Diagnose kann angenommen werden, dass vielleicht sogar vor Aufruf der Funktion Drupal.toggleFieldset etwas nicht stimmt, da diese garnicht erst (beim zweiten Mal) aktiviert/angesprochen/aufgerufen wird.
Stellt sich mir die Frage, wie das event-handling in Drupal funktioniert, bzw. wie kommt alles in Gang wenn ich klicke?
Drupal.toggleFieldset
am 15.05.2009 - 10:19 Uhr
Hallo,
ich habe die gleiche Problematik wie live, und bin zu dem gleichen Ergebnis gekommen wie MopAn:
live, aufgrund der o.g. Diagnose kann angenommen werden, dass vielleicht sogar vor Aufruf der Funktion Drupal.toggleFieldset etwas nicht stimmt, da diese garnicht erst (beim zweiten Mal) aktiviert/angesprochen/aufgerufen wird.
Ich habe mich nun auch schon mehrere Stunden mit dem Thema beschäftigt, komme aber nicht weiter. Es wäre echt toll, wenn ein Profi sich der Sache annehmen könnte.
Oder gibt es sogar schon einen Workaround, oder Bugfix dafür, und ich weiß es nicht?
Mit besten Grüßen
Module nacheinander
am 15.05.2009 - 10:26 Uhr
Module nacheinander deaktivieren und schauen, welches Module das Auf-/Zuklappen kaputt macht.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
jQuery Update
am 15.05.2009 - 10:34 Uhr
Bei Problemen mit der Collapsi-Funktionalitaet kann man die installierte jQuery aktualisieren mittels des Modules jQuery Update.
Ist das Modul aktiv unbedingt den Hinweisen zu diesem Modul im Statusbericht folgen. Nach meinen Erfahrungen loest man damit Collapsi-Probleme fast immer.
------------------------
Quiptime Group
Da geht noch was.
Hatte Lösung per Patch gefunden
am 15.05.2009 - 12:33 Uhr
Hi Leute,
ich hatte es gelöst, indem ich einen Patch gefunden hatte, der genau an der vermuteten Stelle in der collapse.js ansetzt.
Leider habe die URL zum Patch nicht mehr, jedoch schaut meine Drupal.toggleFieldset (eingebaute und auskommentierte alerts bitte ignorieren *gg*) nun so aus.(Habe die alten Fragmente/Code an dem Anpassungen gemacht worden waren, auskommentiert und drin gelassen. So kann man mit dem alten Code vergleichen).
Drupal.toggleFieldset = function(fieldset) {
/*
if ($(fieldset).is('.collapsed')) {
var content = $('> div', fieldset).hide();
//alert('hier');
$(fieldset).removeClass('collapsed');
content.slideDown(300, {
complete: function() {
// Make sure we open to height auto
$(this).css('height', 'auto');
Drupal.collapseScrollIntoView(this.parentNode);
this.parentNode.animating = false;
},
step: function() {
// Scroll the fieldset into view
Drupal.collapseScrollIntoView(this.parentNode);
}
});
if (typeof Drupal.textareaAttach != 'undefined') {
// Initialize resizable textareas that are now revealed
*/
if ($(fieldset).is('.collapsed')) {
var content = $('> div', fieldset).hide();
$(fieldset).removeClass('collapsed');
content.slideDown(300,
function() {
// Make sure we open to height auto
$(this).css('height', 'auto');
Drupal.collapseScrollIntoView(this.parentNode);
this.parentNode.animating = false;
});
if (typeof Drupal.textareaAttach != 'undefined') {
// Initialize resizable textareas that are now revealed
Drupal.textareaAttach(null, fieldset);
}
}
else {
var content = $('> div', fieldset).slideUp('medium', function() {
//alert('da');
$(this.parentNode).addClass('collapsed');
this.parentNode.animating = false;
});
}
}
Anschließend funktionierte das 'collapsen' wieder einwandfrei.
Das aktivieren und deaktivieren von Modulen zur Lösung des Problems funktionierte übrigens nicht.
Jquery Update
am 22.05.2009 - 08:03 Uhr
Hey,
danke für die schnellen Antworten. Das Problem hab ich dank quiptime's tipp gelöst. JQuery Update, da hätte ich auch selbst drauf kommen können.
Vielen Dank!!!
Mit besten Grüßen