0

http://jsfiddle.net/mhenrixon/zPLgS/16/上有以下一段 javascript ,它在常规浏览器中工作正常,但我无法在需要工作的 Windows CE 6.0 的 IE Mobile 中工作。任何人都知道如何解决这个问题?

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;
}​
4

3 回答 3

1

我无法测试这些链接中的任何一个,因为我没有任何带有 Windows Mobile 的移动设备,但也许有一些对您有帮助的东西:

于 2012-03-05T19:13:44.460 回答
1

如果您只是将event.whichor event.keyCodefrom更改ENTERTAB,并让默认行为通过,该怎么办?就像是:

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

于 2012-03-05T18:59:29.577 回答
0

谢谢大家,问题是没有得到密钥,也没有改变传播或类似的东西,这实际上很容易。

完整的解决方案

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;
      }
    }
  }
}
于 2012-03-21T13:30:42.370 回答