2016-02-28 46 views
0

我想捕捉事件时,通过复制粘贴或编程添加到textarea的一些文本,所以我可以添加一些关于它的工作。如何通过复制粘贴或编程方式将某些文本添加到textarea中时捕获事件?

我该怎么做?我应该使用哪种jQuery方法?更改方法没有工作。

$('textarea').on('change', function(){ 
--do some stuff; 
}); 
+0

的可能的复制[JavaScript的获得上粘贴事件(跨浏览器)剪贴板数据(http://stackoverflow.com/questions/2176861/javascript-get -clipboard数据上的浆状事件跨浏览器) –

回答

1

总是有可以截取的paste事件。

下面是一个例子

var yourElement = document.getElementById("yourElementId"); 

yourElement.addEventListener('paste', function(event) { 
    console.log("The data that was just pasted was "+event.clipboardData.getData('text/plain')); 
}); 

试试在你的浏览器在计算器上的导航栏右侧的搜索栏上,并看到自己。

您可以用得到它的参考

document.getElementsByName("q")[0] 
1

您可以使用input事件处理由用户粘贴完成,

$('textarea').on('input', function(){ 
--do some stuff; 
}); 

但是,如果你通过编程做这种事件不会被解雇。

1

...通过复制粘贴...

复制/粘贴位很容易对一个现代浏览器:抓住input事件。

...或...编程

有没有当textarea的值编程方式更改引发的事件。 唯一的方法是使用MutationObserver注意subtree,childListcharacterData的更改。 MutationObserverwell supported以外的IE,它直到IE11才到达。但是,对于大多数用途,您可以使用使用过时的“突变事件”的填充物来提供垫片MutationObserver垫片。只需搜索“MutationObserver polyfill”或“MutationObserver shim”以查找选项。

令我惊讶的是,设置的value一个textarea不火Chrome版MutationObserver(一些其他的事情要做,但不是说)。这意味着为了检测程序化变更,您必须轮询(blech!),保留旧值并定期(比如每20-100ms)检查一次,看它是否有所不同。

相关问题