Конвертировать ввод на вкладку в Windows Mobile
Подготовьте следующий фрагмент javascript на http://jsfiddle.net/mhenrixon/zPLgS/16/ и он нормально работает в обычных браузерах, но я не могу заставить его работать в IE Mobile для Windows CE 6.0, где он должен работать. Кто-нибудь знает, как это исправить?
function tab(field, event) {
if (event.which == 13 /* IE9/Firefox/Chrome/Opera/Safari */ || event.keyCode == 13 /* IE8 and earlier */ ) {
for (i = 0; i < field.form.elements.length; i++) {
if (field.form.elements[i].tabIndex == field.tabIndex + 1) {
field.form.elements[i].focus();
if (field.form.elements[i].type == "text") {
field.form.elements[i].select();
break;
}
}
}
return false;
}
return true;
}
3 ответа
Спасибо, ребята, проблема не в том, чтобы получить ключ, и это не меняло распространение или что-то в этом роде, на самом деле это было довольно легко.
Полное решение
function tab(field, event) {
if (event.which == 13 /* IE9/Firefox/Chrome/Opera/Safari */ || event.keyCode == 13 /* IE8 and earlier */) {
nextElement(field);
return false;
}
return true;
}
function nextElement(field) {
for (var i = 0; i < field.form.elements.length; i++) {
if (field.form.elements[i].tabIndex == field.tabIndex + 1) {
field.form.elements[i].focus();
if (field.form.elements[i].type == "text") {
field.form.elements[i].select();
break;
}
}
}
}
Я не могу проверить ни одну из этих ссылок, потому что у меня нет мобильного устройства с Windows Mobile, но, возможно, есть что-то полезное для вас:
Что если бы вы просто изменили event.which
или же event.keyCode
от ENTER
в TAB
и позволить поведению по умолчанию пройти? Что-то вроде:
function tab(event) {
if (event.which && event.which == 13)
event.which = 9;
else if (event.keyCode && event.keyCode == 13)
event.keyCode = 9;
}
Не уверен, что коды клавиш для Windows Mobile различны, но чтобы выяснить это, все, что вам нужно сделать, это alert(event.which);
или же alert(event.keyCode);
,