5

インターネットでの調査によると、最大長属性は IE 8 および 9 では機能しません。

ここから解決策を試した問題を解決するには、プレゼンテーションテキストエリア用の他の機能を使用します。

//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>

問題は、IE8 9 で 2000 を超えると textarea に文字を入力できなくなりますが、textarea の制限を超えるコピー アンド ペースト機能は引き続き使用できます。これを修正する方法は?ありがとう

4

4 に答える 4

13

問題のコードは、制限に達したときにキーボードからの入力を効果的に無効にします。貼り付けたコンテンツにも制限を課すには、他のイベントも処理する必要があります。次のコードは、テキストエリアのコンテンツを指定された長さに切り詰めます。これはユーザビリティとしては良くありません (無言の切り捨てではなく、おそらく制限を超えようとする試みを知らせる必要があります。また、ユーザーを支援するためにページに文字カウンターを配置することもできます)。

<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>
于 2013-06-04T06:41:21.007 に答える
1

このコードを使用すると、IE 9 バージョン以下で動作します。if 条件でのみバージョンを変更します。

if(navigator.appVersion.indexOf("MSIE .9")!=-1)
                                {
                                    $('#inputid').bind('keyup blur', function () {
                                        var $this = $(this);
                                        var len = $this.val().length;
                                        var maxlength = 3;
                                        if (maxlength && len > maxlength) {
                                            var inputvalue= $this.val().slice(0, maxlength);
                                            $this.val("");
                                            $this.val(inputvalue);
                                        }
                                    });
                                }
于 2015-10-16T14:38:04.520 に答える
-2

追加するだけonpasteで問題が修正されました

<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); onpaste="return ( this.value.length < 2000);"></textarea>
于 2013-06-04T03:02:39.433 に答える