У меня есть ввод текста с обработчиком события onkeydown, который преобразует
<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 безуспешно. Мне нужно универсальное решение, которое заставит веб-приложение буквально вести себя так, как если бы я нажал
Также обратите внимание: Я ЗНАЮ, что это «неправильное» поведение, и что Enter должен отправить форму. Однако мой клиент ' Сотрудники изначально приходят из среды зеленого экрана, где Enter перемещает их между полями. Мы должны сохранить тот же интерфейс. Это то, что есть.
ОБНОВЛЕНИЕ: Я обнаружил разницу между IE8 и IE9. В IE8 мой параметр myEvent.keyCode
остается в силе. В IE9 этого нет. Я могу обновить window.event.keyCode
, и он будет сохранен, но это не повлияет на то, что произойдет позже. Ага ... Есть идеи?