2009-09-24 5 views
1

J'ai besoin de détecter l'ID de l'élément qui a généré un événement onchange.Capture événement javascript dans IE Mobile

Ce travail de code dans la plupart des navigateurs modernes :

<input type="text" onchange="return onchange_handler(event);" 

function onchange_handler(event) { 
    var id = event.target ? event.target.id : event.srcElement.id; 
    ... 
    return false; 
} 

Mais il ne fonctionne pas dans IE Mobile .

J'ai essayé le code suivant, et au moins l'événement est déclenché et la fonction de gestionnaire est appelé, mais window.event n'est pas disponible lorsque gestionnaire d'événements est appelé:

<input type="text" onchange="return onchange_handler();" 

function onchange_handler() { 
    var event = window.event; // <= evaluated as UNDEFINED 
    var id = event.target ? event.target.id : event.srcElement.id; 
    ... 
    return false; 
} 

Est-il possible d'obtenir un référence à l'événement déclenché? Ou une approche alternative pour connaître l'identifiant de l'élément qui a provoqué l'événement.

+0

Dans tous les navigateurs l'événement 'change' sur textboxes est uniquement déclenché lorsque l'utilisateur se concentre loin de la zone de texte (par exemple, sur 'flou'). Avez-vous vérifié IE Mobile a la même caractéristique? –

+0

Oui, l'événement est déclenché même dans IE Mobile, mais je n'arrive pas à trouver un moyen d'accéder à la variable d'événement (window.event). –

+0

Est-ce que les événements * any * fonctionnent sur IE Mobile? D'après ce que je peux voir ici: http://www.google.com/search?q=cache:qpi5snb2FLMJ:https://connect.microsoft.com/feedback/ViewFeedback.aspx%3FFeedbackID%3D312339%26SiteID%3D502+%22IE + Mobile% 22 + OR +% 22Mobile + IE% 22 + événements Il semble qu'il y ait un manque sérieux de support d'événement DOM de base sur ce navigateur. –

Répondre

2

Une solution serait de passer l'élément à la fonction de rappel: (non testé)

<input type="text" id="mytextbox" onchange="return onchange_handler(this);" 

function onchange_handler(element) { 
    var id = element.id; 
    ... 
    return false; 
} 
+0

Merci, ça marche mais ça me force à garder deux versions des scripts. J'accepte votre réponse car c'est probablement la seule solution. –