我想挂钩<input type="text">
的粘贴事件并强制将此文本粘贴到隐藏的textarea中(然后我想解析textarea的文本并执行'从excel粘贴数据到gridview'操作)。类似的东西:
$('#input1').bind('paste', function(e) {
// code do paste text to textarea instead of originally targeted input
});
我应该编写哪些跨浏览器代码而不是评论?
感谢。
答案 0 :(得分:3)
当Ctrl和V键或Shift和Insert键关闭时,有一个hacky解决方案会在textarea上触发focus
事件。 [是的,它不适用于contextmenu - &gt;过去]
$(document).ready(function(){
var activeOnPaste = null;
$('#input1').keydown(function(e){
var code = e.which || e.keyCode;
if((e.ctrlKey && code == 86) || (e.shiftKey && code == 45)){
activeOnPaste = $(this);
$('#textarea').val('').focus();
}
});
$('#textarea').keyup(function(){
if(activeOnPaste != null){
$(activeOnPaste).focus();
activeOnPaste = null;
}
});
});
当Ctrl和V键关闭时,代码会使指针聚焦在textarea上。在那一刻没有粘贴任何文本,它在此keydown函数被触发后被粘贴,因此粘贴的文本显示在textarea中。在那之后,在该textarea的密钥上,#input1
将成为焦点。
键入此内容时,我发现使用范围可能有键盘粘贴和鼠标粘贴的解决方案。我也会尝试一下......
答案 1 :(得分:0)
您应该将函数绑定到输入字段onChange()事件,并在每次调用此函数时复制其内容,然后处理数据。如果你对“粘贴”的内容特别感兴趣(我不知道你在那里做什么,但一般来说,这是一个坏概念的标志,在粘贴内容必须另外处理的情况下)你可以尝试实现一个检查输入速度的计数器(例如,每秒超过xx个字符 - &gt; PASTE-Eventcall)