ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
mod_form Mehrseitige Formulare

 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Formular (Conpresso 4)
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
radamazone
ConPresso-Checker


Anmeldungsdatum: 01.01.1970
Beiträge: 101

BeitragVerfasst am: 01.09.2008 08:18    Titel: mod_form Mehrseitige Formulare Antworten mit Zitat

Hallo,

ich habe folgende Problemstellung: Nach der Eingabe der Anzahl der Personen soll entsprechend dieser Anzahl die Felder Vorname, Name, Geburtsdatum angezeigt werden.

Ist das mit mod_form möglich?
Evtl. auch in einem mehrseitigen Formular?

Grüsse
radamazone
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6988

BeitragVerfasst am: 01.09.2008 08:53    Titel: Antworten mit Zitat

Das ließe sich mit Javascript realisieren.

Dabei werden je nach gewählter Anzahl die entsprechenden Felder angezeigt. Ob man das nun als "mehrseitiges" Formular (mit überlappenden DIVs) oder "großes" Formular erstellt hängt lediglich vom Geschick des Erstellers ab.

Hier eine Demo-Seite:
http://www.malleus.de/FAQ/selectSwapContent.html
oder so
http://felix.fh-n.de/Beispiele/Javascript_Ajax/Tab.php
oder direkt hier im Forum
http://community.conpresso.de/viewtopic.php?t=3712
was man leider niemals findet, wenn dort solch aussagelose Titel gewählt werden...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
radamazone
ConPresso-Checker


Anmeldungsdatum: 01.01.1970
Beiträge: 101

BeitragVerfasst am: 01.09.2008 14:05    Titel: Antworten mit Zitat

Danke Markus,

ich habe es wie http://www.malleus.de/FAQ/selectSwapContent.html gelöst.

Schöner wäre es jedoch so wie hier gewesen: http://www.malleus.de/FAQ/showInputsBySelect.html. Aber eben dass nacheinander nicht INPUT-Felder eingeblendet werden, sondern DIVs, d.h. für das 1. Kind der 1 Div, für das 2. Kind der 2. DIV dazu usw.

Nur leider habe ich das nicht hinbekommen Crying or Very sad

Hier der Ansatz, aber irgendwie klappt das mit der Anzeige der DIVs nicht. Bin halt auch kein JavaScript Spezialist.

Code:

<html>
<head>
<title></title>
<script type="text/javascript">
function showControls( maxControls )
{
   for ( var i = 0; i < 3; i++ )
   {
      document.getElementById("input"[i]).style.display = ( i < maxControls ) ? "block" : "none";
   }
}
</script>

</head>

<body>

<form name="myForm">

<select name="kind" onchange="showControls(this.value)">
<option value="0">Bitte auswählen</option>
<option value="1">Eins</option>
<option value="2">Zwei</option>
<option value="3">Drei</option>
</select><br><br>
<div id="input1" style="display:none"><br>
<div id="input2" style="display:none"><br>
<div id="input3" style="display:none"><br>

</body>
</html>


Danke für Deine schnelle Hilfe.

Sandra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6988

BeitragVerfasst am: 01.09.2008 14:59    Titel: Antworten mit Zitat

Probiere es mal so:
Code:
<html>
<head>
<title></title>
<script type="text/javascript">
function showControls( maxControls )
{
   var num=0;
   var divs=document.getElementsByTagName("DIV");
   for (i=0;i<divs.length;i++)
   {
      if (divs[i].className=="personendaten") {
         num++;
         divs[i].style.display = ( num <= maxControls ) ? "block" : "none";
      }   
   }
}
</script>

</head>

<body>

<form name="myForm">

<select name="kind" onchange="showControls(this.value)">
<option value="0">Bitte auswählen</option>
<option value="1">Eins</option>
<option value="2">Zwei</option>
<option value="3">Drei</option>
</select><br><br>
<div class="personendaten" style="display:none">DIV1</div>
<div class="personendaten" style="display:none">DIV2</div>
<div class="personendaten" style="display:none">DIV3</div>

</body>
</html>

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
radamazone
ConPresso-Checker


Anmeldungsdatum: 01.01.1970
Beiträge: 101

BeitragVerfasst am: 01.09.2008 15:32    Titel: Antworten mit Zitat

Danke Very Happy Genial!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
radamazone
ConPresso-Checker


Anmeldungsdatum: 01.01.1970
Beiträge: 101

BeitragVerfasst am: 05.09.2008 07:35    Titel: Antworten mit Zitat

Hallo Markus,

nun hätte ich noch eine Frage dazu.

Wie muß ich
Code:
onchange="showControls(this.value)"


im Formulartemplate eintragen? Also wo bei type=select ?

Danke für Deine Hilfe

Sandra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6988

BeitragVerfasst am: 05.09.2008 09:18    Titel: Antworten mit Zitat

Das ist bisher nicht vorgesehen, kann aber eingebaut werden.

Dazu in includes/parser_r_form.inc.php
nach

Code:
if (array_key_exists('size', $parameters)) {
    $input_size = ' size="'.$parameters['size'].'"';
}

einen Teil
Code:
if (array_key_exists('onchange', $parameters)) {
    $onchange = ' onchange="'.$parameters['onchange'].'"';
}

einsetzen.

Dann den Teil
Code:
if ($parameters['type'] == "select")  {
   $values = explode(",",$parameters['values']);
   $_t = '<select name="'.$field_name.'"'.$input_size.$input_class.$disabled.'>';
   foreach($values AS $_v)
   {
      $selected = ($content[$key]['input']==$_v) ? ' selected="selected"' : '';
      $_t .= '<option value="'.$_v.'"'.$selected.'>'.$_v.'</option>';
   }
   $_t .= '</select>';
}

ergänzen zu
Code:
if ($parameters['type'] == "select")  {
   $values = explode(",",$parameters['values']);
   $_t = '<select name="'.$field_name.'"'.$input_size.$input_class.$onchange.$disabled.'>';
   foreach($values AS $_v)
   {
      $selected = ($content[$key]['input']==$_v) ? ' selected="selected"' : '';
      $_t .= '<option value="'.$_v.'"'.$selected.'>'.$_v.'</option>';
   }
   $_t .= '</select>';
}


Dann kann man den Parameter onchange=showControls(this.value); benutzen.

Auf diese Art lassen sich auch viele andere MouseEvents einbauen.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
radamazone
ConPresso-Checker


Anmeldungsdatum: 01.01.1970
Beiträge: 101

BeitragVerfasst am: 12.09.2008 16:44    Titel: Antworten mit Zitat

Danke, ich werde es versuchen und dann wieder berichten... Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Formular (Conpresso 4) Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen