Конвертировать ввод на вкладку в Windows Mobile - PullRequest
0 голосов
/ 05 марта 2012

Установите следующий фрагмент 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 ]

1 голос
/ 05 марта 2012

Я не могу проверить ни одну из этих ссылок, потому что у меня нет мобильного устройства с Windows Mobile, но, возможно, есть что-то полезное для вас:

1 голос
/ 05 марта 2012

Что если бы вы просто изменили 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);.

0 голосов
/ 21 марта 2012

Спасибо, ребята, проблема не в том, чтобы получить ключ, и не в том, чтобы изменить распространение или что-то в этом роде, на самом деле это было довольно легко.

Полное решение

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;
      }
    }
  }
}
...