[gelöst]dynamisch Felder ein und ausblenden...how to?
am 04.01.2014 - 12:03 Uhr in
Hallo liebe Community,
ich bastle gerade an den Kontoeinstellungen und möchte folgendes erreichen:
Der User bekommt bei der Bearbeitung seines Profils eine Liste mit 5 Kontrollkästchen vorgesetzt bei denen er die zutreffenden Werte markiert.
Klickt er auf eines der Kästchen 2-4 soll jeweils direkt daneben ein zweites Options-Kästchen erscheinen bei denen der User auch noch anklicken kann.
Bei Kästchen 5 handelt es sich um "Sonstiges". Dort sollte dann dementsprechend kein weiteres Options-Kästchen erscheinen sondern ein kleines Textfeld um Sonstiges dementsprechend etwas zu spezifizieren...
Leider bin ich etwas ratlos, wie so etwas anzupacken ist.
Könnt Ihr mir hier weiterhelfen?
Vorab vielen Dank,
Maximus
- Anmelden oder Registrieren um Kommentare zu schreiben
So was ähnliches habe ich mal
am 04.01.2014 - 12:44 Uhr
So was ähnliches habe ich mal mit Conditional Fields gelöst, allerdings noch mit D6
Hallo, das wüde ich mit
am 04.01.2014 - 13:18 Uhr
Hallo,
das wüde ich mit Javascript lösen, am besten mit JQuery: 'Hidden' Felder bei Bedarf einblenden.
Den Event kannst Du an das Ausfüllen der Optionsfelder binden http://api.jquery.com/change/
Gruß
Christian
als erstes schonmal Danke!!
am 04.01.2014 - 13:31 Uhr
Hallo!
hab mir grad das mit conditional fields angschaut und das sieht schonmal sehr gut aus!
Problem ist hald, dass ich für jede einzelne Ausprägung der Kontrollkästchen 2-4 wohl ein eigenes Feld anlegen muss, da ich keine Funktion finde wie ich einzelne Optionen dann einblenden lassen kann...aber grundsätzlich würde es so gehen, wenn auch nicht sehr elegant.
Ich habe das gleiche schonmal außerhalb Drupal mit javascript programmiert und dementsprechend würd ichs hier gern wieder so machen, nur wohin ich meinen Code in Drupal packen kann ist mir noch schleierhaft...schliesslich soll Drupal ja trotzdem dann alle Kästchen als solche erkennen und richtig abspeichern etc.
Ich schau mir mal deinen Link an Christian!
Vielen Dank schonmal!
Hallo, hier noch zur
am 04.01.2014 - 13:34 Uhr
Hallo,
hier noch zur Info:
https://drupal.org/node/756722
Gruß
dementsprechend dann im Modul user oder?
am 04.01.2014 - 14:20 Uhr
Hallo oteno,
danke!!
Versteh ich das richtig, dass ich also am Besten ganz normal mit Drupal 4 Felder anlege (3 Optionsfelder, 1 Textfeld) und diese mit CSS rechts neben dem anderen Formular platzieren kann und per Javascript ein und ausblende?
Wenn es die Kontoeinstellungen betrifft, muss ich also das ganze im Modul user bearbeiten oder?
Vielen Dank und viele Grüße,
Maximus
Hallo,Zitat:Versteh ich
am 04.01.2014 - 15:16 Uhr
Hallo,
Versteh ich das richtig, dass ich also am Besten ganz normal mit Drupal 4 Felder anlege (3 Optionsfelder, 1 Textfeld) und diese mit CSS rechts neben dem anderen Formular platzieren kann und per Javascript ein und ausblende?
wenn es Deinen Anforderungen entspricht, würde ich es so machen.
Das Modul ist 'profile', nicht 'user', aber da muss Du ja nicht rein, das JS solltest Du ja einfach in Deienem Theme unterbringen können ohne Overwrites.
Der Konfigurations-Pfad, um neue Felder hinzuzufügen, lautet /admin/config/people/accounts/fields . Wenn es so nicht reicht kannst Du Dir mal Profiles2 ansehen.
Gruß
Christian
alles klar! ich setz mich ran!
am 04.01.2014 - 15:24 Uhr
Vielen Dank Christian,
klingt gut! Ich probiers gleich mal aus!
Danke an alle!
events an ein Drupal feld
am 04.01.2014 - 15:31 Uhr
Hallo,
eine Frage dazu kommt mir jetzt grad doch noch...wo und wie pflege ich das onclick() event ein?
Grüße,
Maximus
onclick() ist nicht schön,
am 04.01.2014 - 16:22 Uhr
onclick() ist nicht schön, benutze lieber .on http://api.jquery.com/on/
so irgendwie (nur grob skizziert) in einer js-Datei, die Du in Deinem Theme lädst:
(function($) {
$(document).ready(function($) {
$( "#<em>deineform</em>" ).on( "<em>click oder change oder sonst ein event</em>", <em>"deinform_element auf das geklickt wird oder das geändert wird</em>", function() {
$( "#<em>deinhiddenfeld</em>" ).show();
});
});
}(jQuery));
Gruß
Christian
elemente bezeichnen
am 04.01.2014 - 17:56 Uhr
vielen Dank Christian für deine Mühen!
ich stell mich allerdings bisschen blöd grad an auf diese weise events zu handlen...wahrscheinlich mache ich bei der bezeichnung irgendwas falsch:
(function($) {
$(document).ready(function($) {
$( "#edit-field-besetzung-und-1" ).on( "click", function() {
alert("es funktioniert");
});
}(jQuery));
was stimmt daran nicht? Ich wollte tesweise einfach mal nur bei einem klick auf das kästchen 2 (die id ist: "edit-field-besetzung-und-1")
probieren aber so ganz will das nicht funktionieren. habs auf etliche verschiedene andere arten probiert, aber es passiert nie was.
Sorry wenns was total offensichtliches ist...
Vielen Dank und viele Grüße,
maximus
Wahrscheinlich hast Du eine
am 04.01.2014 - 18:57 Uhr
Wahrscheinlich hast Du eine ältere JQuery-Version (<1.7.7), die .on noch nicht kennt. Hätte ich vielleicht daran denken sollen...
Dann mach es mit click(). also:
$(document).ready(function($) {
$( "#edit-field-besetzung-und-1" ).click(function() {
alert("es funktioniert");
});
Gruß
Christian
Ich kann dir diesen Weg
am 04.01.2014 - 19:02 Uhr
Ich kann dir diesen Weg definitiv nicht empfehlen. Um alles richtig zu machen ist weit mehr als jQuery Code zu beachten.
Z.B. ist 'edit-field-besetzung-und-1' nicht sprachunabhängig. Das mag jetzt in deinem Fall keine Rolle spielen, zeigt aber, dass das so nicht der richtige Drupal Weg ist.
Conditional Fields löst dein Problem, es gibt keinen Grund das Modul nicht zu nutzen und irgendwas 'zu basteln'.
leider funktioniert da mehr nicht...
am 04.01.2014 - 19:14 Uhr
selbst mit dem click() funktionierts leider nicht...
bisschen bitter, weil ich als drupal neuling gern ein paar dinge noch wie gewohnt per hand gemacht hätte bevor ich mich in dem ganzen modul-wald verlaufe =P
unabhängig ob ich jetzt conditional fields verwenden kann oder nicht würde mich dann doch interessieren an was bei mir das js scheitert...im seitenquelltext ist es verfügbar, syntax-fehler bemerke ich sonst auch keine...ich bin bisschen ratlos!
ich habe dir nochmal den
am 04.01.2014 - 19:42 Uhr
ich habe dir nochmal den kompletten Code-Block reingestellt.
(function($) {
$(document).ready(function($) {
$( "#edit-field-besetzung-und-1" ).click(function() {
alert("es funktioniert");
});
});
}(jQuery));
schätze mal da fehlten Klammern...
Überlege DIr auch die Argumente von md.
Meine Meinung nach muss man nicht für alles ein Modul laden, und sollte auch mit Requests auf das System sparsam sein.
"Als Gebastel" würde ich den Einsatz von Javascript für solche Sachen nicht gerade bezeichnen.
Falls der Selektor irgendwie sprachabhäng ist oder an eine andere veränderbare Logik geknüpft ist, sollte man das natürlich berücksichtigen.
Gruß
Christian
es klappt!
am 04.01.2014 - 21:04 Uhr
nun endlich scheint es zu funzen! wunderbar!
nochmals vielen vielen Dank Christian!