我符合要求,用户可以从任何其他资源(如word,excel,notepad ++)复制数据,然后将其粘贴到我的网页,该应用程序必须在Chrome上运行。如果粘贴数据包含一些无效数据,我必须修改它。
我尝试了 clipboardData.setData ,但它只适用于 IE ,下面是我的代码:
<script type="text/javascript">
var elEditor = document.getElementById("editor");
elEditor.addEventListener('paste', function(e){
var clipboardData = e.clipboardData || e.originalEvent.clipboardData || window.clipboardData;
var text = clipboardData.getData('Text');
console.log("---before:\t"+text);
text = text.replace(/\d+/,new Date().getTime());
//don't change the pasted data on Chrome page!That's the key point make it fail
clipboardData.setData('Text',text);
console.log("---after:\t"+text);
return false;
});
</script>
我可以看到Chrome控制台中的数据已更改,但在网页中,数据仍未更改!任何人都可以帮助我吗?
如果不使用 clipboardData.setData ,还有其他方法可以做同样的事情吗?
提前感谢!
答案 0 :(得分:0)
对于“粘贴”事件,您需要更改字段的内容,因为粘贴已经发生;
示例:https://jsfiddle.net/o2gxgz9r/75276/
$('.cpf_cnpj').each(function(){
$(this).on('paste', function(e){
var clipboardData = e.clipboardData || e.originalEvent.clipboardData || window.clipboardData;
if (clipboardData){
var text = clipboardData.getData('text');
text = text.replace(/\./g, '').replace(/-/g, '').replace(/\//g, '');
e.target.value = text;
e.preventDefault();
}
});
});