2010-09-22 97 views
0

我有一个真正讨厌的焦点在Internet Explorer中的问题。IE浏览器,按下按钮时textarea的值不会改变

我有一个用于输入文本的textarea。此textarea对用户不可见,仅用于为更高级的视图提供可靠的文本输入。

由于textarea不可见,所以不应该在javascript中使用textarea.focus()来激活文本输入。这一直工作得很好,直到现在我得到真正奇怪的结果。

对于textinput我基本上使用这个事件加上一个确切的副本onkeypress。

textarea.onkeyup = function (e) { 
     //textarea.value contains the full text 
     //Update the view with this value 
}; 

问题是有时候textarea.value没有更新。我甚至可以在上面的keyup事件中看到e.keyCode中的按钮,但值不会改变。 这似乎发生在我点击页面上的某个地方后,但这不会触发模糊事件。我正在记录onfocus和onblur事件,所以我可以看到textarea何时失去焦点,但它没有。而且我仍然收到键入/按下/下降事件。

如果我尝试用textarea.focus()重新调整textarea的焦点,问题依然存在。我发现的解决方法是将窗口的焦点调整为window.focus(),然后调用textarea.focus()。 这个问题是,焦点是一个非常昂贵的操作在IE浏览器(不开玩笑),因为我无法检测到什么时候会发生这个问题,我必须继续做一定的时间间隔严重影响我的应用程序的性能(涉及动画等)。

我对其他浏览器使用完全相同的代码,并且没有此问题。

+0

不是一个答案,但如果你发现你不得不放弃textarea的事情,这个页面可能有助于浏览跨浏览器的键盘事件的变幻莫测:http://unixpapa.com/js/key.html – 2010-09-22 10:07:53

回答

0

将标识符更改为不像“textAreaAdv”那样的通用标识符,IE有时会与此词混淆。

+0

在我的代码中,它实际上已被称为不同的东西,但感谢您的建议。 – elm 2010-09-22 11:51:28

相关问题