当我动态更改其“只读”属性时,我在 IE7 和 IE8(但不是其他浏览器)中看到文本区域存在问题。文本区域最初被定义为只读,当用户在文本框内单击时,我将 readOnly 设置为 false。此时,如果我输入任何普通字符,它们不会显示 - 事实上,文本框的行为就像它仍然是只读的(即,箭头键四处移动,按删除键转到上一页,等等。 )
如果我再次在文本区域内单击,则输入正常。
这是说明问题的代码片段:
<html>
<head></head>
<body>
<textarea id="txt1" onclick="document.getElementById('txt1').readOnly = false" readonly=true>Click in here and try typing.</textarea>
</body>
</html>
我尝试过不同的文档类型。我尝试在点击处理程序中手动调用 focus() 和 click() 。我尝试设置一个计时器来设置只读标志。我尝试过使用 setAttribute()/removeAttribute()。这些方法都没有任何乐趣。
Update
我最终使用了 contentEditable,但仅适用于 IE - 我仍然对 FF 和 Safari/Chrome 使用 readOnly,因为 contentEditable 似乎不适用于这些浏览器。我也得用IE9重新检查一下。
这是按预期工作的(微软)。需要单击两次才能开始输入,因为第一次单击时它仍然是只读的,因此该元素不会聚焦。更改只读后,您需要使用 Javascript 将元素聚焦,否则您的用户将必须双击。这是因为 IE 不会聚焦禁用的元素,而 Chrome 会聚焦,即使您无法打字。
编辑以添加解决方案
IE 似乎不喜欢.focus();
在这种情况下,但是.select();
works.
document.getElementById('yourTextareaId').onclick = function() {
this.readOnly = false;
this.select();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)