Aggiungere dinamicamente eventi ad un controllo (JavaScript)

mercoledì 26 agosto 2009 - 19.21

overdotato Profilo | Newbie

Salve.

Avendo: una funzione JS "valid(x)" che deve necessariamente ricevere un parametro, un pulsante html "edit" ed un input di tipo testo "campoprova"

Si vuole, al click del pulsante "edit", aggiungere dinamicamente all'input "campoprova" l'evento "onkeyup" richiamante la funzione "valid(variabile)".

il codice seguente, con IE7, non da errore, ma non da neanche segni di vita:

al click del pulsante "edit":

var oggetto=document.getElementById("campoprova"); if(oggetto.addEventListener) { oggetto.addEventListener("keyup", function(){valid(oggetto);}, false); }

è errata la sintassi?

NB: è stata effettuata una prova anche sostituendo "keyup" con "keyUp"

Gluck74 Profilo | Guru

si, c'è un errore.
addeventlistener è il modello di registrazione eventi sviluppato da W3C, quindi funziona bene sui browser non IE.
Micrisoft ha sviluppato un altro modello: attachEvent.

trasforma il tuo codice in questo modo:

var oggetto=document.getElementById("campoprova"); if(oggetto.addEventListener) { oggetto.addEventListener("keyup", function(){valid(oggetto);}, false); } else { oggetto.attachEvent('onkeyup', function(){valid(oggetto);}); }

per approfondire:
http://www.quirksmode.org/js/events_advanced.html

overdotato Profilo | Newbie

Guarda, a me i fatti fanno capire il contrario, poichè nella stessa pagina ho un'altra funzione (riguardante una select) che con IE viene richiamata correttamente dopo un AddEventListener, mentre con Firefox con AttachEvent. Penso sia un errore di sintassi, o di riferimento agli elementi.

Gluck74 Profilo | Guru

secondo me ti stai confondendo.....

http://www.quirksmode.org/js/events_advanced.html
http://v3.thewatchmakerproject.com/journal/168/javascript-the-dom-addeventlistener-and-attachevent
https://developer.mozilla.org/En/DOM:element.addEventListener
http://www.alagad.com/blog/post.cfm/discovering-the-javascript-attachevent-method
http://www.webreference.com/js/column23/attach.html
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5