Pergunta

Preciso detectar o ID do elemento que gerou um evento de onchange.

Este código funciona na maioria navegadores modernos:

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

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

Mas não funciona em Ou seja, móvel.

Eu tentei o seguinte código e pelo menos o evento foi demitido e a função do manipulador é chamada, mas window.event não está disponível quando o manipulador de eventos é chamado:

<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;
}

Existe alguma maneira de obter uma referência ao evento demitido? Ou uma abordagem alternativa para conhecer o ID do elemento que causou o evento.

Foi útil?

Solução

Uma solução alternativa seria passar o elemento para o retorno de chamada: (não testado)

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

function onchange_handler(element) {
    var id = element.id;
    ...
    return false;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top