Ike: dynamisch erstellten Input Feldern und Event-Handlern

Beitrag lesen

Servus,

Ich würde sagen, es ist grundsätzlich mal ein Internet-Explorer-Bug (oder Feature?). Hast du's schon mal im Firefox getestet? Da sollte es gehen, denke ich...

Ok aber das hilft dir ja mal soweit nichts, wenn's im IE auch gehen soll...

Ich würde an deiner Stelle dann so vorgehen:

1. Die Funktion, die das neue Feld erstellt:

function addField() {
<!-- neues Feld erzeugen, so oder ähnlich... -->
document.getElementById("hierSindMeineInputs").innerHTML += "<input type="text" value="" id="meineEindeutigeId" />";

<!-- dem neuen Feld das onChange-Event via DOM definieren -->
document.getElementById("meineEindeutigeId").onchange = function() {
hallo(2);
}
}

Alternativ könntest du auch das neue Feld nicht mittels innerHTML erstellen, sondern tatsächlich komplett über das DOM-Objekt die entsprechenden neuen Nodes mit den entsprechenden Attributen erstellen. Dann gehts garantiert, ist aber aufwändiger.

Gruß

Ike

Hi @ll

Lange überschrift doch ist mein Problem recht simpel erklärt.

Mein Problem ist folgend:

Ich habe ein Formular erstellt das eine gewisse Anzahl an Zeilen (table) hat. In jeder Zelle dieser Zeilen befinden sich <input type="text"> Felder.
Da es unter vorkommen kann, dass die angeführten Zeilen zu wenig sind, habe ich ein script (pluss button) eingebaut, das mir weitere Zeilen einfügt, ganz im Layout der restlichen Zeilen.
Das Funktioniert soweit prima. Nun kommt mein Problem.
Die Werte (Zahlen) die in selbige input Felder eingegeben werden sollen von einem anderen Feld abgezogen werden (was auch funktioniert). Allerdings geht das nur, bei den fix "montierten" input feldern. Die dynamisch nachträglich erzeugten Inputfelder (die auch den selben eventhandler haben) reagieren nicht auf das Event "onChange".

Kleines Beispiel (sinngemäß):


[Quote]
function hallo (i){
alert("Na Hallo, du bist der " + i + "te!");
}

<!-- fixen Zeilen:
<input type="text" value="" onChange="hallo(1)">

<!-- mittles Javascript dynamisch erstelltes Feld:
<input type="text" value="" onChange="hallo(2)">[/Quote]

wie gesagt der Bereich "<!-- fixen Zeilen:" funktioniert, die "<!-- mittles Javascript dynamisch erstelltes Feld:" tut nichts.
Selbst wenn ich die Funktion direkt in den Event-Handler eintrage (javascript:alert(hello); passiert gar nichts....

Was mach ich falsch? Kann mir jemand helfen?