the fr3ak: Neues Element erstellen

Beitrag lesen

Ich habe einen Code geschrieben, bei dem bei der Eingabe in ein INPUT-Feld ein neues Feld erzeugt wird. Diese neuen Felder sollen somit dynamisch erzeugt werden und wie die schon bestehenden Felder zu behandeln sein.
Mit der "press"-Funktion wird die Checkbox verwaltet und mit "create" sollte somit eine neue Checkbox, sowie ein neues Feld erzeugt werden (mit denselben Attributen usw.). Die Variable "i" überwacht nur, dass nicht bei jedem Keydown ein neues Feld entsteht, sondern nur bei der Eingabe des ersten Zeichens.

Mein Problem ist nun, dass folgendes Programm im Internet Explorer und im Safari nicht korrekt ausgeführt wird. Im Firefox und Opera funktioniert es (fast) problemlos.

Anmerkung: Die Auswahl der Checkbox wird bei ausgefülltem Feld angewählt und bei leerem Feld wieder entfernt

Ich habe noch einen weiteren Fehler entdeckt, aber diesen noch nicht versucht zu lösen. Um diesen geht es nun auch nicht.

Ich programmiere noch nicht lange JavaScript. Es kann somit auch andere Fehler enthalten.

<html>

<script language="javascript">

var i = 1;

function press(num)
{
 if(document.umfrage.text[num].value=="")
         {
  document.umfrage.check[num].checked=false;
         }else{
  document.umfrage.check[num].checked=true;
         }
}

function chksel(num)
{
 if(document.umfrage.text[num].value=="")
         {
          document.umfrage.check[num].checked=false;
         }
}

function create(num2)
{

var numesp = document.umfrage.text.length;

i++;
var nbr = numesp + 1;
 if(i==2)
 {
  var br = document.createElement("br");

var inpt = document.createElement("input");
                 var type = document.createAttribute("type");
                 var name = document.createAttribute("name");
                 var clck = document.createAttribute("onClick");
                 type.nodeValue = "checkbox";
                 name.nodeValue = "check";
                 clck.nodeValue = "chksel(" + numesp + ")";
                 inpt.setAttributeNode(type);
                 inpt.setAttributeNode(name);
                 inpt.setAttributeNode(clck);

var intx = document.createElement("input");
                 var sztx = document.createAttribute("size");
                 var intp = document.createAttribute("type");
                 var nmtx = document.createAttribute("name");
                 var kyup = document.createAttribute("onKeyup");
                 var blur = document.createAttribute("onBlur");
                 var kydw = document.createAttribute("onKeydown");
                 sztx.nodeValue = "40";
                 intp.nodeValue = "text";
                 nmtx.nodeValue = "text";
                 kyup.nodeValue = "press(" + numesp + ")";
                 blur.nodeValue = "less(this)";
                 kydw.nodeValue = "press(" + numesp + ");create(" + nbr + ")";
                 intx.setAttributeNode(sztx);
                 intx.setAttributeNode(intp);
                 intx.setAttributeNode(nmtx);
                 intx.setAttributeNode(kyup);
                 intx.setAttributeNode(blur);
                 intx.setAttributeNode(kydw);

var box = document.getElementById("box");
                 box.appendChild(br);
                 box.appendChild(inpt);
                 box.appendChild(intx);
         }
}

function less(element)
{
 if(element.value!="")
         {
          i = 1;
         }
}

</script>

<body>

<form action="" method="post" name="umfrage">

<div id="box">
 <input type="checkbox" name="check" onClick="chksel(0)"><input size="40" type="text" name="text" onKeyup="press(0)" onKeydown="press(0)"><br>
 <input type="checkbox" name="check" onClick="chksel(1)"><input size="40" type="text" name="text" onKeyup="press(1)" onBlur="less(this)" onKeydown="create(2);press(1)">

</div>

</form>
</body>
</html>

Vielen Dank im Voraus
the fr3ak