Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 35
  1. #1
    Avatar von casaout
    casaout ist offline Mitglied
    registriert
    21-08-2009
    Beiträge
    27

    DropDown-Auswahl - > Anzahl Felder für Formular

    Guten Nachmittag

    Ich versuche ein Code-Snippet zu programmieren, bei welchem man per DropDown-Feld die Anzahl Text-FElder auswählen kann. Sobald man es ausgewählt hat, erscheinen diese an einer bestimmten Stelle. Ausserdem sollen diese Felder im Formular zur Überprüfung auch wieder aufgefüllt werden können.

    Das meiste funktioniert bisher, leider habe ich noch zwei Probleme:
    1. Wenn man im DropDown-Feld z.B. 5 auswählt erscheinen korrekterweise 5 Felder. Wählt man dann aber eine niederigere Zahl (z.B. 3) aus, verschwinden die überflüssigen 2 nicht.

    2. Leider schaffe ich es nicht, die Felder (mit JS) zu füllen, so dass sie nach dem Senden wieder aufgefüllt werden...

    Könnt ihr mir bitte helfen?

    Hier mein Code:

    --JSCRIPT-CODE--
    Code:
    <?php
    
    echo "<script type='text/javascript'>
    
    <!--
    function changeUsersNumber()
    {	
      var auswahl = document.getElementsByName('countUsers')[0].value;
      for (var i = 1; i <= 15; i++)
      {
    	if (i <= auswahl)
    	{
      	   var string='<input type=text name=countUsers_nr_' + i + ' size=20 maxlength=50 value=userValue_nr_' + i + '>';
    	   document.getElementById('textField' + i).innerHTML = string;
    	}
    	else
    	{
    	  document.getElementById('textField' + i).removeChild(document.all('textField' + i));
    	}
      }
    }
    </script>";
    
    ?>
    --FORMULAR--
    Code:
    <form action="#" method="post">
    
    <select name=countUsers id=countUsers onchange=changeUsersNumber()>
    	<option value=1 <? if ($_POST["countUsers"] == 1) echo "selected"; ?>>1</option>
                    <!-- DASSELBE von 2-15-->
    </select>
    
    <div id="textField1"></div>
    <!-- DASSELBE von 2-15-->
    
    
    <input type="submit" value="Submit" />
    </form>

    Vielen Dank!

  2. #2
    Avatar von Arcsinh
    Arcsinh ist offline Kaiser
    registriert
    03-06-2010
    Beiträge
    1.392

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Ich glaube das geht wegen dem innerHTML nicht. Versuch das mal mit der Alternative appendChild() und createTextNode().
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Goethe)

  3. #3
    HTML 4 YOU ist offline Haudegen
    registriert
    23-07-2010
    Beiträge
    508

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Außerdem läuft dein Code wenn nur im IE richtig, denn der Rest kennt kein document.all.

    Du kannst aber ganz leicht eine Browserweiche einbauen:

    PHP-Code:
    if(document.alldocument.getElementById('textField' i).removeChild(document.all('textField' i));
    else if(
    document.layersdocument.getElementById('textField' i).removeChild(document.layers('textField' i)); 
    Ansonsten schau mal in die Fehlerkonsole

  4. #4
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.678

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Das removeChild ist Müll. Du kannst einfach über innerHTML löschen ("" zuweisen)... ABER ich finde den ganzen Ansatz nicht besonders toll.

    Das mit dem "Wert zuweisen" verstehe ich nicht.

  5. #5
    Avatar von casaout
    casaout ist offline Mitglied
    registriert
    21-08-2009
    Beiträge
    27

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Vielen Dank für alle eure Antworten.

    @kkapsner: Welchen Ansatz würdest du mir empfehlen?

    Bin um jeden Tipp dankbar.

    Gruss casaout

  6. #6
    Avatar von casaout
    casaout ist offline Mitglied
    registriert
    21-08-2009
    Beiträge
    27

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    hi

    Ich bin inzwischen einen Schritt weiter gekommen, konnte das Problem leider noch nicht vollständig lösen. Irgendein Problem gibt es noch mit dem Ausfüllen nach dem Senden...

    Hier der aktualisierte CodeTeil:

    Code:
    function changeUsersNumber()
    {
    	var auswahl = document.getElementsByName('countUsers')[0].value;
    	for (var i = 1; i <= 15; i++)
    	{
    		if (i <= auswahl)
    		{
    			var textFeld = 'countUsers_nr_' + i;
    			var valueStandard = 'countUsers_nr_' + i;
    			var valueCurrent = document.getElementsByName(textFeld).value;
    			
    			if (valueCurrent != valueStandard)
    				var value = valueCurrent;
    			else
    				var value = valueStandard;
    				
    			var string='<input type=text name=countUsers_nr_' + i + ' size=20 maxlength=50 value=Benutzer' + i + '>';
    			document.getElementById('textField' + i).innerHTML = string;
    		}
    		else
    		{
    			if(document.all) document.getElementById('textField' + i).removeChild(document.all('textField' + i)); //IE
    			else if(document.layers) document.getElementById('textField' + i).removeChild(document.layers('textField' + i)); //Firefox, Opera, etc.
    		}
    	}
    }

    Besten Dank!

  7. #7
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Code:
    if(document.all) ...
    else if(document.layers)
    Das ist hoffnungslos veraltet, vergiß das sofort wieder und benutze die richtige Methode um Elemente anzusprechen.

    Was das senden angeht, solltest du uns verraten, dass du nur im IE testet, oder?
    Der hat ein Problem mit dynamisch erzeugten Formularelemente, deshalb brauchst du eine Funktion um diese zu erzeugen, was in deinem Fall sich aber schwierig gestaltet.

    Ein Ansatz könnte so aussehen:
    Code:
    <!doctype html>
    <html><head><title>Test</title>
    
    <style>
    
    </style>
    </head><body>
    <form action="#" method="post">
    
    <select name="countUsers" onchange="changeUsersNumber(this.value)">
    	<option value=1>1</option>
    	<option value=2>2</option>
    	<option value=3>3</option>
    </select>
    
    <div id="textField"></div>
    <!-- DASSELBE von 2-15-->
    
    
    <input type="submit" value="Submit" />
    </form>
    
    <div></div>
    <script type="text/javascript">
    function createNamedElement(tag, name) {
    	var IE = /*@cc_on!@*/false; 
    	if(IE) tag = '<' + tag + ' name="' + name + '">';
    	var neu = document.createElement(tag);
    	neu.name = name;
    	return neu;
    }
    function changeUsersNumber(anzahl){
    	var textField = document.getElementById('textField');
    	textField.innerHTML = '';
    	for (var i = 1; i <= anzahl; i++) {
    				
    			var el = createNamedElement('input', 'countUsers_nr_' + i);
    			el.size=20 ;
    			el.maxlength=50;
    			el.value= 'Benutzer' + i;
    			
    			textField.appendChild(el);
    	}
    }
    
    
    </script> 
    
    
    </body></html>

  8. #8
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.678

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Ich würde, wie der Schlaue, komplett über DOM gehen und auch nicht bei jeder Änderung des <select>s die Felder neu generieren:
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Fenstertitel</title>
    <script type="text/javascript">
    function setInputNumber(nr){
    	var wrapper = document.getElementById("inputPlace");
    	var inputs = wrapper.getElementsByTagName("input");
    	
    	while (inputs.length > nr){
    		wrapper.removeChild(inputs[inputs.length - 1]);
    	}
    	while (inputs.length < nr){
    		var name = "countUsers_nr_" + (inputs.length + 1);
    		var el = document.createElement(
    			(/*@cc_on!@*/false)?
    			"<input name='" + name + "'>":
    			"input"
    		);
    		el.name = name;
    		el.size=20 ;
    		el.maxlength=50;
    		el.value= 'Benutzer' + (inputs.length + 1);
    		
    		wrapper.appendChild(el);
    	}
    }
    </script>
    <style type="text/css">
    #inputPlace input {
    	display: block;
    }
    </style>
    </head>
    <body>
    <select onchange="setInputNumber(this.value);">
    	<option value=0 selected="selected">0</option>
    	<option value=1>1</option>
    	<option value=2>2</option>
    	<option value=3>3</option>
    	<option value=4>4</option>
    	<option value=5>5</option>
    	<option value=6>6</option>
    </select>
    <div id="inputPlace"></div>
    </body>
    </html>
    - immer noch nicht 100%ig sauber... aber besser.

  9. #9
    Avatar von casaout
    casaout ist offline Mitglied
    registriert
    21-08-2009
    Beiträge
    27

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    vielen Dank euch beiden für eure Tipps.

    Leider habe ich noch ein Problem:

    - Ich kann leider noch nicht (nachdem ich das Formular gesendet habe) die bestehenden Felder neu auffüllen, habe folgendes versucht:
    Code:
    if (wrapper.getElementsByTagName("input")[inputs.length + 1].value != 'Benutzer' + (inputs.length + 1)) el.value = inputs[inputs.length + 1].value;
    else el.value = 'Benutzer' + (inputs.length + 1);
    Fehlermeldung: getElementsByTagName(......) ist Null oder kein Objekt.

    Besten Dank!

  10. #10
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.678

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Ich verstehe nicht, was du machen willst. Wieso willst du nach dem Absenden des Formulars irgendetwas befüllen? Werde bitte etwas klarer, was das Ziel dieser Aktion ist.

  11. #11
    Avatar von casaout
    casaout ist offline Mitglied
    registriert
    21-08-2009
    Beiträge
    27

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    sorry für meine unklare Beschreibung.

    Ich habe ein Formular und ein Teil des Formulars ist das DropDown-Feld mit den Feldern (je nach Auswahl). Klickt der User auf "Absenden" dann verifiziere ich diese und viele andere Felder. Wenn etwas nicht stimmt, dann erscheint eine Meldung und das "halb-korrekt-ausgefüllte" Formular wird wieder angezeigt, damit der User die Fehler korrigieren kann. Hier möchte ich diese User-Felder auch wieder ausfüllen, was ich leider erfolgslos versucht habe.

    Danke!

  12. #12
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.678

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Das musst du dann natürlich serverseitig machen.

  13. #13
    HTML 4 YOU ist offline Haudegen
    registriert
    23-07-2010
    Beiträge
    508

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    Verifizierst du Serverseitig?

    Wenn nicht, dann sollte über onsubmit bei einem return false; nichts verloren gehen.

    Bsp:

    HTML-Code:
    <!DOCTYPE html>
    
    
    <html>
    
        <head>
    
            <script language="javascript" type="text/javascript">
            window.onload = function() {
    
                document.forms[0].onsubmit = function() {
    
                    if(!document.forms[0].input1.value || !document.forms[0].input2.value) {
                        alert('Bitte alle Felder ausfüllen');
    
                        return false;
                    }
    
                }
    
            };
            </script>
    
        </head>
    
        <body>
    
            <form action="ausf&uuml;hren.php">
    
                <input name="input1" type="text" /> <br />
                <input name="input2" type="text" /> <br /> <br />
    
                <input type="submit" value="Absenden" />
    
            </form>
    
        </body>
    
    </html>

  14. #14
    Avatar von casaout
    casaout ist offline Mitglied
    registriert
    21-08-2009
    Beiträge
    27

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    hallo..

    nein ich verifiziere das Formular mit PHP... war für mich bisher am passendsten und das Formular ist inzwischen sehr gross... deshalb würde ich gerne, falls möglich, diesen Weg beibehalten...

    Kann mir jemand sagen was am erwähnten Code falsch ist?:

    Code:
    if (wrapper.getElementsByTagName("input")[inputs.length + 1].value != 'Benutzer' + (inputs.length + 1)) el.value = inputs[inputs.length + 1].value;
    else el.value = 'Benutzer' + (inputs.length + 1);
    Besten Dank

  15. #15
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: DropDown-Auswahl - > Anzahl Felder für Formular

    An dem Code ist nichts falsch, ausser dass du nicht prüfst ob es das Element überhaupt gibt.
    Allerdings frage mich, warum du es so umständlich machst, wenn du doch bereits gezeigt bekommen hast, wie es einfacher geht.

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. DropDown - Anzahl berrechnen
    Von suky im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 11-01-2010, 16:13
  2. Anzahl der sichtbaren werte im Dropdown begrenzen?
    Von tobi2 im Forum CSS und (X)HTML
    Antworten: 0
    Letzter Beitrag: 14-05-2008, 11:35
  3. 3 dropdown felder übernehmen
    Von firebirder im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 18-10-2005, 10:38
  4. DropDown-Auswahl
    Von Super-BimBam im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 20-09-2004, 22:08
  5. Anzahl Inputfelder nach Auswahl vom Selectmenü
    Von Denow im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 05-05-2003, 15:10

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •