3

我有以下代码(从这个问题中提取)用于设置文本区域的字符限制。

function maxLength(el) {    
    if (!("maxLength" in el)) {
        var max = el.attributes.maxLength.value;
        el.onkeypress = function () {
            if (this.value.length >= max) return false;
        };
    }
}

var maxtext = document.getElementsByClassName("maxtext");

for (var i = 0; i < maxtext.length; i++) {
    maxLength(maxtext[i]);
}

还有一个我的文本区域的 html 示例:

<textarea maxlength="150" class="maxtext"></textarea>

这一切都在 Firefox 和 Chrome 中运行良好。在 IE7+ 中,如果我输入到限制,它会阻止我,但我可以不受限制地复制/粘贴文本。

有什么方法可以修改此脚本以防止复制/粘贴超出最大字符限制?

4

2 回答 2

12

监听onpaste事件。一旦事件触发,从剪贴板中抓取文本并按照您的喜好进行操作。

HTML

<textarea id="test" maxlength="10" class="maxtext"></textarea>

JAVASCRIPT

var test = document.getElementById("test");

test.onpaste = function(e){
    //do some IE browser checking for e
    var max = test.getAttribute("maxlength");
    e.clipboardData.getData('text/plain').slice(0, max);
};

例子

于 2013-03-22T15:10:12.347 回答
0

您可以收听onchange事件以检查内容长度,如果超过限制则减去它。

于 2013-03-22T15:09:41.417 回答