0

我有一个屏幕键盘和 5 个输入框。我的问题是当我专注于输入框并输入内容时,什么都不会发生。每次我关注输入框时,我都想添加输入。

这是我的简单代码。此代码仅适用于 1 个输入字段。我想让这项工作适用于 5 或​​ 4 个输入字段。

function writeKey(key){
  if(key){
    if(key == "Enter"){
      key = "10";
     } else if(key == "tab"){
      document.getElementById("feld1").value += "\t ";
    } else if(key=="backspace"){
      document.getElementById("feld1").value=document.getElementById("feld1").value.slice(0,-1);
    } else if(key==" "){
      document.getElementById("feld1").value += " ";
    } else {
      document.getElementById("feld1").value += String.fromCharCode(key);
    }
  }
}
4

2 回答 2

2

查看指向当前焦点元素的document.activeElement 。

您可以使用它重写您的代码:

function writeKey(key){
  var el = document.activeElement;
  if(key){
    if(key == "Enter"){
      key = "10";
     } else if(key == "tab"){
      el.value += "\t ";
    } else if(key=="backspace"){
      el.value = el.value.slice(0,-1);
    } else if(key==" "){
      el.value += " ";
    } else {
      el.value += String.fromCharCode(key);
    }
  }
}

演示在这里

请注意,您应该运行 writeKey 而不是 onclick 而是 onmousedown。否则焦点将已经从输入中移动。演示反映了这一点。

这是它的html代码:

<div onmousedown="writeKey('a');return false">Click key</div>
<input type="text" />
<input type="text" />
<input type="text" />

另外,看看return false;writeKey 被调用之后。它将阻止默认浏览器操作并单击一个键,您不会失去输入的焦点。没有它,您将需要在每次按键后将焦点设置在一个元素上。

于 2013-01-11T09:15:13.077 回答
1

我不知道您实际上是如何调用该writeKey方法的。你可以像这样重写你的代码:

function writeKey(key, fieldId){
  if(key){
    if(key == "Enter"){
      key = "10";
     } else if(key == "tab"){
      document.getElementById(fieldId).value += "\t ";
    } else if(key=="backspace"){
      document.getElementById(fieldId).value =
          document.getElementById(fieldId).value.slice(0,-1);
    } else if(key==" "){
      document.getElementById(fieldId).value += " ";
    } else {
      document.getElementById(fieldId).value += String.fromCharCode(key);
    }
  }
}

或者您可以传递文件本身:

function writeKey(key, field) {
    ...
    field.value += "\t";
    ...
}
于 2013-01-11T09:13:12.727 回答