Вопрос

Мне нужно определить идентификатор элемента, сгенерировавшего событие onchange.

Этот код работает в большинстве современные браузеры:

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

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

Но это не работает в IE мобильный.

Я попробовал следующий код, и, по крайней мере, событие запускается и вызывается функция обработчика, но window.event недоступен при вызове обработчика событий:

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

Есть ли способ получить ссылку на запущенное событие?Или альтернативный подход, позволяющий узнать идентификатор элемента, вызвавшего событие.

Это было полезно?

Решение

Обходной путь — передать элемент обратному вызову:(непроверено)

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

function onchange_handler(element) {
    var id = element.id;
    ...
    return false;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top