【发布时间】:2015-07-31 08:59:18
【问题描述】:
由于 IE8/9 不支持 HTML5 的 maxlength 属性,我需要找到一种方法来防止将过长的文本粘贴到 textarea/input 中,因此我选择通过 jQuery 使用 onpaste-attribute/eventhandler,请参阅下面的示例代码:
$(document).ready(function() {
$('textarea[maxlength]').on('paste', function() {
var maxlength = $(this).attr('maxlength');
if (this.value.length >= maxlength) {
this.value = this.value.substr(0,maxlength);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea maxlength="10"></textarea>
问题在于,在 IE8/9 中,当您粘贴超过 10 个字符的文本时,它会在 textarea 内暂时完全可见,然后事件处理程序才会切断所有超过 maxlength 的文本,这显然是不需要的。看起来粘贴的文本在短时间内变成了 textarea 的当前值——这永远不会发生。
所以我需要拦截textarea的值更新,并在粘贴的文本真正变成当前值之前检查它的长度。
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: javascript internet-explorer-8 internet-explorer-9 textarea maxlength