Как преобразовать Enter в Tab (со сменой фокуса) в IE9? Это работало в IE8

У меня есть ввод текста с обработчиком события 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 , и он будет сохранен, но это не повлияет на то, что произойдет позже. Ага ... Есть идеи?

7
задан David 18 March 2011 в 04:05
поделиться