18. februar 2009 - 09:32Der er
9 kommentarer og 1 løsning
udvid onchange event dynamisk
Hej alle.
Jeg vil gerne tilføje en onchange event på alle mine tekst felter. Det kan jeg også sagtens, men på en af dem er der allerede en onchange event, og den skal bibeholdes. Hvordan gør man det??
Jeg har denne test kode indtil vidre: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled</title> </head> <body onload="addChangeFunk();">
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- function addChangeFunk() { var ele = document.getElementsByTagName("input") for(f=0;f<ele.length;f++) { if(ele[f].type == "text") { if(ele[f].onchange) { //udvid onchange her... } else ele[f].onchange = function(){alert('test')} } } }
Den popper også op med en "test" inden siden er loaded, hvor efter jeg får fejlen. Den burde først poppe op med "test" når jeg rette et af tekst felterne.
Et hurtigt ekstra spørgsmål, hvis du lige ved det.
Jeg har et element som reloader siden ved onchange og i den forbindelse har jeg udvidet koden, så den sender en true/false med hvis der allerede var sket ændring. Det fungere fint, bortset fra en lille detalje. Problemet er at hvis man kun ændre dette element, så bliver værdien ikke sat, da reloaden affyre først.
Er der en måde at ændre addEvent() funktionen så den indsætter min event før en evt allerede eksisterende?
Hvis ikke, må jeg bare smide mit kald manuelt på dette element, men det var det jeg helst ville undgå.
Nej, du kan ikke umiddelbart ændre rækkefølgen, Men du kan jo sætte begge handlers med funktionen i stedet for at hardcode den. I så fald sætter du bare handlerne i den rækkefølge, de skal fyre af. Noget à la:
function addChangeFunk() { var ele = document.getElementsByTagName("input") for(f=0;f<ele.length;f++) { if(ele[f].type == "text") { addEvent(ele[f], "change", function(){alert('test')}) } } addEvent(document.getElementById("myInput") "change", function(){alert('test nummer 2')}) }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.