如何访问剪贴板和当前光标位置时,粘贴在IE8/9的文本区域之前,它成为当前值
How to access clipboard and current cursor position when pasting in a textarea in IE8/9 before it becomes the current value?
由于IE8/9不支持HTML5的maxlength属性,我需要找到一种方法来防止将太长的文本粘贴到textarea/input中,所以我选择通过jQuery使用onpaste
-attribute/eventandler,参见下面的示例代码:
$(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个字符的文本时,它在文本区域内完全可见,只有在事件处理程序切断所有超过maxlength的文本,这显然是不需要的。看起来在很短的一段时间内,粘贴的文本变成了文本区的当前值——这是不应该发生的。
所以我需要拦截textarea的值更新,并在它实际成为当前值之前检查粘贴的文本的长度。
实现这一目标的最佳方法是什么?
您可以使用
访问剪贴板内容window.clipboardData.getData('Text')
并在将其放入文本框之前根据需要进行操作。
务必返回false,否则粘贴事件将触发并替换您所做的操作。
要访问当前值,读取textarea的innerText值
读取selectionStart属性获取当前光标位置。如果没有选择,selectionStart属性将给出当前位置。如果有选择,也可以使用selectionEnd
相关文章:
- 仅IE8 html文本框中的字符
- IE8更改文本区域上的事件侦听器不工作
- 如何使用ie8检测文本输入何时发生更改
- IE8:模式弹出窗口中的文本输入不会;t显示键入的文本
- IE8 换行符问题中的文本区域
- 如何在IE8中获取XML节点的文本值
- 使用在 IE8 中不起作用的旋转文本
- 输入文本框在 IE8 中无法识别
- IE8 中的 jQuery Change attr href 会更改文本
- 输入框和文本在IE8中退格/删除时消失
- 文本区域的最大长度在IE8上不工作
- 如果文本中有任何格式,为什么这个函数会失败?(在IE8)
- IE8 iframe将简单的文本文件呈现为HTML,我需要原始代码
- 在IE8中右键单击取消选中的文本
- 当以编程方式更改文本框值时,IE8触发更改事件
- IE8 jQuery将光标放置在文本框的开头
- IE8不显示文本区域调整大小右下角
- Dijit组合框文本对齐在IE8中不起作用
- 赢得文本't出现在IE8及以下版本中
- Mootools-集合类型=“;文本“;到具有类型=“0”的输入;密码”;在IE8中不起作用