Чтобы это работало во всех браузерах, передайте event
вызываемой функции:
<input type="text" id="fname" onkeyup="upperCase(event)">
function upperCase(evt) {
if (evt) {
var target = evt.target;
target.value = target.value.toUpperCase();
} else if (window.event) {
var target = window.event.srcElement;
target.value = target.value.toUpperCase();
} else alert('No event information');
}
<input type="text" id="fname" onkeyup="upperCase(event)">
В некоторых браузерах, таких как IE, это работает, потому что event
преобразуется в window.event
, что всегда относится к текущему обрабатываемому событию.В других браузерах (таких как Firefox) это работает, потому что event
- это переменная, которая находится в области действия для обработчика событий.Вы можете представить себе содержимое атрибута onkeyup
как тело функции, которая выглядит как
function(event) {
// Attribute value here
}