当我动态更改其“readonly”属性时,我在IE7和IE8(但不是其他浏览器)中看到了textarea的问题。 textarea最初定义为只读,当用户在文本框内单击时,我将readOnly设置为false。此时,如果我键入任何普通字符,它们就不会显示 - 事实上,文本框的行为就像它仍然是只读的(即箭头键移动,点击删除转到上一页,等等。 )
如果我再次在textarea中单击,则输入正常。
以下是说明问题的代码段:
<html>
<head></head>
<body>
<textarea id="txt1" onclick="document.getElementById('txt1').readOnly = false" readonly=true>Click in here and try typing.</textarea>
</body>
</html>
我尝试过不同的doctypes。我尝试在点击处理程序中手动调用focus()和click()。我已经尝试设置一个计时器来设置readOnly标志。我尝试过使用setAttribute()/ removeAttribute()。任何这些方法都不会令人高兴。
更新
我最终使用了contentEditable,但仅限于IE - 我仍然使用readOnly用于FF和Safari / Chrome,因为contentEditable似乎不适用于那些浏览器。我也必须重新检查IE9。
答案 0 :(得分:3)
这是按预期工作(由Microsoft)。这将需要两次点击才能开始输入,因为在第一次点击时它仍然是只读的,因此元素不会聚焦。您需要在更改只读后使用Javascript关注元素,否则您的用户将需要双击。这是因为即使您无法键入,IE也不会关注已禁用的元素,Chrome会这样做。
在这种情况下,IE似乎不喜欢.focus();
,但.select();
有效。
document.getElementById('yourTextareaId').onclick = function() {
this.readOnly = false;
this.select();
}
答案 1 :(得分:1)
也许我误解了这个问题,但我改变了onclick to onfocus,它似乎工作正常。
(编辑:这只是你的代码片段的直接复制粘贴,没有doctypes或其他任何东西,并且在IE7中查看。)