textarea的最大长度不适用于IE8

use*_*516 5 html javascript jquery textarea maxlength

从互联网研究来看,最大长度属性不适用于IE 8和9

为了解决这个问题我从这里尝试了一个解决方案,它使用了另一个用于表示textarea的函数:

//Dynamic append the textarea row
function do_resize(textArea) {
    while (
        textArea.rows > 1 &&
        textArea.scrollHeight < textArea.offsetHeight
    )
    {
        textArea.rows--;
    }
    while (textArea.scrollHeight > textArea.offsetHeight)
    {
        textArea.rows++;
    }
    textArea.rows++
}


<textarea name="q<%=countNo%>_ans" rows="3" cols="55" maxlength="2000" style="resize: none;" onkeyup="new do_resize(this);" onKeyPress="return ( this.value.length < 2000);"></textarea>
Run Code Online (Sandbox Code Playgroud)

问题是,textarea在IE8 9中超过2000之后无法输入任何字符,但我仍然可以使用超过textarea限制的复制和粘贴功能.如何解决这个问题?谢谢

Juk*_*ela 12

当达到限制时,问题中的代码会有效地禁用键盘输入.要对粘贴的内容施加限制,您还需要处理其他事件.以下代码将textarea内容截断为给定长度.这不是很好的可用性(您可能应该发出超出限制的信号,而不是静默截断,并且您可以在页面上设置一个字符计数器来帮助用户),但它会执行以下操作:

<textarea maxlength=2000
  onchange="testLength(this)"
  onkeyup="testLength(this)"
  onpaste="testLength(this)"
></textarea>
<script>
var maxLength = 2000;
function testLength(ta) {
  if(ta.value.length > maxLength) {
    ta.value = ta.value.substring(0, maxLength);
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)