0

我必须实现一个简单的屏幕键盘,用户必须首先单击 10 个输入框之一(使其获得焦点),然后使用屏幕键盘将字母添加到焦点输入。

我遇到的问题是,在 IE(7、8 和 9)中,字母每次都被添加到第 5 个输入框中,无论哪个输入框试图获得焦点。

谁能澄清为什么会这样?

下面我提供了在 Chrome 和 Firefox 中完美运行的代码。

<img onClick='addIt("q")' src = 'images/alphabet/q.png' style='width:50px;height:50px;cursor:pointer'></div>

当点击图片时,它会调用下面定义的 JS 函数“addIt('q')”:

function addIt(key){
  selectedElement = (document.forms["foo"].elements["focusedField"].value!='')?document.forms["foo"].elements["focusedField"].value:"bar";
  d = document.forms["foo"].elements[selectedElement];
  d.value =  d.value + key;
}

在单击输入框时分配focusedField,该输入框是所需功能的密码类型(用户不应看到他正在输入的内容)。

<input type='password' name='4_1' id = '4_1' onFocus='document.forms["foo"].elements["focusedField"].value = this.name'/>
4

1 回答 1

1

那是因为您正在使用以数字开头的字段名称。

当您使用 时document.forms["foo"].elements["4_1"],Internet Explorer 会将其解释为document.forms["foo"].elements[4]并为您提供表单中的第五个元素。

只需使字段名称以字母开头,例如:

<input type='password' name='x4_1' id='x4_1' ...
于 2012-06-06T08:47:41.933 回答