我必须使用JQuery来获取文本区域的粘贴事件。我尝试了以下代码,但它无法正常工作......
$(document).ready(function()
{
$('#txtcomplaint').keyup(function()
{
TextCounter('txtcomplaint','counterComplaint', 1000 );
})
$('#txtcomplaint').onpaste(function()
{
alert()
//TextCounter('txtcomplaint','counterComplaint', 1000 );
})
});
答案 0 :(得分:25)
你可以做这样的事情
$("#txtcomplaint").bind('paste', function(e) {
var elem = $(this);
setTimeout(function() {
// gets the copied text after a specified time (100 milliseconds)
var text = elem.val();
}, 100);
});
答案 1 :(得分:6)
$('#txtcomplaint').bind('paste', function(e){ alert('pasting!') });
有关其他资源,请查看here。
答案 2 :(得分:1)
我终于让它工作了1)输入,2)拖放,3)Ctrl-V和4)从鼠标点击的上下文菜单粘贴,但我必须将粘贴和拖放处理程序附加到document(其中'taValue'是我试图监控的textareas类):
$(document).on("paste drop", '.taValue', function (e) {
myHandler.call(e.target, e);
});
textarea上的keyup事件已经奏效。接下来的问题是,在textarea中的文本实际发生更改之前,粘贴和放置事件会被触发。在我的情况下,我想将新文本与原始文本进行比较。我求助于一个setTimeout:
function myHandler(e) {
if (e && (e.type === "drop" || e.type === "paste")) {
var me = this;
setTimeout(function () { myHandler.call(me) }, 200);
}... [more code to do the comparison]
我讨厌对这样的事情使用超时但它确实有效(当我尝试100毫秒间隔时,它没有)。
答案 3 :(得分:1)
这是最有用的解决方案:
$("#item_name").bind("input change", function() {});
也许改变不是必要的。