我必须实现一个简单的屏幕键盘,用户必须首先点击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'/>
答案 0 :(得分:0)
那是因为您使用的是以数字开头的字段名称。
当您使用document.forms["foo"].elements["4_1"]
时,Internet Explorer会将其解释为document.forms["foo"].elements[4]
,并为您提供表单中的第五个元素。
只需让字段名称以字母开头,例如:
<input type='password' name='x4_1' id='x4_1' ...