У меня есть текстовый ввод с помощью обработчика события onkeydown, который преобразует в , изменив keyCode события с 13 на 9.
<input type="text" onkeydown="enterToTab(event);" onchange="changeEvent(this);"
name="" value="" />
<!-- Other inputs exist as created via the DOM, but they are not sibling elements. -->
Javascript:
function enterToTab(myEvent) {
if (myEvent.keyCode == 13) {
myEvent.keyCode = 9;
}
}
function changeEvent(myInput) { var test = "hello"; }
В IE8 это вызвало событие onchange, но в IE9 этого не происходит. Вместо этого поле ввода сохраняет фокус. Как я могу это сделать? (Это работает в Firefox 3.6 и Chrome 10.0.) Это работает даже в браузерном режиме IE9, если я установил режим документа на «стандарты IE8». Но он не будет работать с режимом документов "стандартов IE9". (Мой DocType XHTML 1.0 Transitional.)
Поскольку это работает в IE7 и 8, может ли это быть ошибкой в IE9, которая будет исправлена?
Обратите внимание: я не могу использовать input.blur()
или , чтобы вручную установить новый фокус , что рекомендуется для всех других решений, которые я читал. Я уже попробовал onkeypress и onkeyup без удачи. Мне нужно универсальное решение, которое заставит веб-приложение вести себя буквально так, как если бы я нажал . Кроме того, у меня нет jQuery, однако, Dojo 1.5 доступен для меня.
Также обратите внимание: я ЗНАЮ, что это «неправильное» поведение, и что Enter должен отправить форму. Однако сотрудники моего клиента изначально пришли из среды с зеленым экраном, где Enter перемещает их между полями. Мы должны сохранить тот же интерфейс. Это то, что есть.
ОБНОВЛЕНИЕ: Я нашел разницу между IE8 и IE9. В IE8 мой параметр myEvent.keyCode
сохраняется. В IE9 это не так. Я могу обновить window.event.keyCode
, и он будет держаться, но это не повлияет на то, что произойдет позже. Аааа ... Есть идеи?