[gelöst]Form API Wert aus select bestimmt wie oft eine Liste von Radios angezeigt wird.
Eingetragen von tiger (415)
am 15.05.2013 - 13:45 Uhr in
am 15.05.2013 - 13:45 Uhr in
Ich habe ein Formular mit einem Select Anzahl dieser bestimmt wie oft das Feld Auswahl angezeigt werden soll.
Das Feld Auswahl ist Integer Feld mit den Optionen Rot, Blau, Grün und lässt unbegrenzt viele Werte zu.
- Anmelden oder Registrieren um Kommentare zu schreiben
Und was ist Deine
am 15.05.2013 - 14:35 Uhr
Und was ist Deine Frage?
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
javascript??
am 15.05.2013 - 14:46 Uhr
In meinem Formular gebe ich das Feld Auswahl 5 mal aus. Der Wert Anzahl bestimmt wieviele dieser Felder display: block sind, die andern sind display:hidden.
Tutorial? Frage?
am 15.05.2013 - 17:23 Uhr
Moin.
Wenn Du aufschreiben wolltest, wie das funktioniert, hast Du leider den Code vergessen.
Wenn Du wissen wolltest, wie das funktioniert, hast Du leider vergessen zu beschreiben, wo genau das Problem liegt ;)
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ich funktioniert nun fast,
am 16.05.2013 - 09:47 Uhr
Ich funktioniert nun fast, das Problem ist das beim 2. Feld die jeweils letzten Felder angezeigt, statt ebenfalls die ersten. Zur Verdeutlichung habe ich ein Bild angehängt.
Das ist mein Formular-Code
$form['field_children'] = array(
'#type' => 'select',
'#required' => $required,
'#title' => dd_cck_field('field_children', 'title'),
'#options' => array_combine(range(1,10), range(1,10)),
);
$form['children-age'] = array(
'#type' => 'fieldset',
'#title' => 'Alter und Geschlecht der Kinder',
'#tree' => true,
);
foreach (range(0, 9) as $k) {
$form['children-age']['field_prof_par_children_birthday'][$k]['value'] = array(
'#type' => 'date_select',
'#title' => $k+1 . ". Kind: Geburtsdatum (Bitte geben Sie den Geburtsmonat und das -jahr ein.)",
'#default_value' => $default_field_prof_par_children_birthday,
'#date_year_range' => '-20:+0',
'#date_format' => 'm.Y',
'#prefix' => '<div class="children-birthdate">',
);
$form['children-age']['field_profile_children_gender'][$k]['value'] = array(
'#type' => 'radios',
'#title' => $k+1 . ". Kind: Geschlecht",
'#options' => dd_cck_field('field_profile_gender', 'allowed_values'),
'#suffix' => '</div>',
);
}
und das ist das aufgerufene javascript, wobei source = field_children und target = children-age.
Die Variablen im javascript sind korrkt übergeben.
Drupal.behaviors.parents_children = function(context) {
if (Drupal.settings.dd_parents) {
var settings = Drupal.settings.parents;
var source = settings.source;
var target = settings.target;
var targets = jQuery('*[name^=' + target + ']').parents('.children-birthdate');
jQuery('*[name=' + source + ']')
.change(function(){
targets.hide();
jQuery(jQuery.makeArray(targets).splice(0, jQuery(this).val())).show();
})
.keyup(function(event){
if (event.keyCode == 40 || event.keyCode == 38) {
jQuery(this).change();
};
})
.change();
};
};
Dynamisches Formular
am 16.05.2013 - 10:03 Uhr
Ich glaub, jetzt verstehe ich, worauf Du hinauswillst.
Ausgehend von dem im ersten Dropdown gewählten Wert ("wie viele Kinder") möchtest Du bestimmte Formularelemente entsprechend häufig wiederholen.
Das geht besser, wenn Du #ajax verwendest und das Formular (bzw. Teile davon) dynamisch neu lädst. Schöne Beispiele dazu findest Du im Modul [do:examples Examples for Developers].
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke
am 21.05.2013 - 09:55 Uhr
Danke, leider ist es noch Drupal 6, also AHAH.
Ich bin jetzt aber beim javascript geblieben, und habe einfach jedes Feld einzeln angesprochen.