Du bist hier: Startseite > WebWissen > Javascript > Formularfelder dynamisch vom User erzeugen lassen
Folge mir bei Twitter...

und bleibe auf dem Laufenden, was die Themen SEO und Webentwicklung angeht!

Sonntag, 14. Juni 2009 um 15:51 Uhr

Formularfelder dynamisch vom User erzeugen lassen: mit Mootools

Hier wird erklärt, wie man mit Hilfe von Mootools Formularfelder dynamisch vom User erzeugen lassen kann.

Ausgangsposition

Zu Beginn sieht der User nur ein einziges input-Feld. Wenn ihm das nicht reichen sollte, kann er sich selbst mehr Felder generieren. Er muss einfach auf "mehr Felder" klicken.

Klingt in der Theorie ziemlich einfach. Aber nicht nur in der Theorie - auch die Umsetzung mit der Javascript-Bibliothek Mootools ist einfach.

Live-Beispiel

Umsetzung

Alles, was wir als Vorraussetzung brauchen ist ein HTML-Formular mit zu Beginn einem input-Feld und ein div, welches den Text "mehr Felder" enthält:

<form id="formular">
<input name="vorname" type="text" size="30" maxlength="30">
</form>
<div id="klick_mich">mehr Felder</div>

Als Nächstes muss per Javascript das Klick-Event für das div "klick_mich" definiert werden:

 
// Alles muss geladen sein
window.addEvent('domready', function() {
    
    var count = 0;

    $('klick_mich').addEvent('click', function(){ 

Hier warten wir erst, bis die gesamte DOM-Struktur geladen ist, ehe wir das Klick-Event definieren. In Zeile 4 wird noch ein Zähler definiert, den wir später noch brauchen, um jedem neuen input-Feld einen eindeutigen Namen zu geben.

Die input-Felder sollen dann in einem Container-div erscheinen, um dann später mit der Funktion appendChild() jeweils ein neues Kind-Element in dieses Container-div einfügen zu können.

Das Container-div muss natürlich erst noch erstellt werden:

 
// Ist der Container für die Inputs schon vorhanden?
if(!Boolean($('container_inputs')))
{
    // Container erzeugen
    var container  = new Element('div', {id: 'container_inputs'});
    $('formular').appendChild(container);
} 

Letzten Endes muss nur noch ein neues input-Element im Container-div angelegt werden:

  
// div um das Input herum:
var div = new Element('div', {id:'div'+count});
$('container_inputs').appendChild(div);

// Input-Feld erzeugen:
var input  = new Element('input', {name:'input'+count, type:'text', size:'30', maxlength:'30'});
$('div'+count).appendChild(input); 

Wie man in Zeile  3 sieht, legen wir um das input-Feld noch ein div, damit alle neuen inputs schön untereinander stehen.

Hier nun das komplette Skript:

   
<form id="formular">
<input name="vorname" type="text" size="30" maxlength="30">
</form>
<div id="klick_mich">mehr Felder</div>
<script type="text/javascript">

    // Alles muss geladen sein
    window.addEvent('domready', function() {
        
        var count = 0;
    
        $('klick_mich').addEvent('click', function(){
            
            // Ist der Container für die Inputs schon vorhanden?
            if(!Boolean($('container_inputs')))
            {
                // Container erzeugen
                var container  = new Element('div', {id: 'container_inputs'});
                $('formular').appendChild(container);
            }
            
            if(count < 4)
            {
                // div um das Input herum:
                var div = new Element('div', {id:'div'+count});
                $('container_inputs').appendChild(div);
                
                // Input-Feld erzeugen:
                var input  = new Element('input', {name:'input'+count, type:'text', size:'30', maxlength:'30'});
                $('div'+count).appendChild(input);
                
                count++;
            }
            else if(count == 4)
            {
                var div = new Element('div', {id:'div'+count});
                $('container_inputs').appendChild(div);
                $('div'+count).appendText('Jetzt reicht\'s aber!');
                count++;
            }
            
        });
    
    });

</script> 
 

Kommentare

Name *
Code   
ChronoComments by Joomla Professional Solutions
Kommentar abgeben

Tags

Javascript appendChild()  Mootools addEvent  Mootools domready  Mootools new Element  

Tweets

Social Bookmarks

Über den Autor

Mein Name ist Axel Scheuering. Während meines Studiums (Wirtschaftsinformatik) habe ich meine Brötchen als Webentwickler verdient. Mmhh lecker Brötchen. Seit ich mit dem Studium fertig bin, arbeite ich hauptberuflich im Bereich Suchmaschinenoptimierung.

2009 habe ich bei der Google Online Marketing Challenge teilgenommen und mich zusammen mit meinem Team gegen über 2.000 Teams aus der gazen Welt durchgesetzt. Wir haben unter den "Final 15" weltweit den 2. Platz erreicht und dafür einen Marketingpreis erhalten :)

Diese Site betreibe ich nicht mehr aktiv weiter. Mein neues Blog findest du unter Methode-Web.de

Inhalte dort sind Webentwicklung, Suchmaschinenoptimierung, das Web allgemein und Literaturtipps.