1

我想挂钩粘贴事件<input type="text">并强制将此文本粘贴到隐藏的 textarea 中(然后我想解析 textarea 的文本并执行“将数据从 excel 粘贴到 gridview”操作)。就像是:

$('#input1').bind('paste', function(e) {
    // code do paste text to textarea instead of originally targeted input
});

我应该写什么跨浏览器代码而不是注释?

谢谢。

4

2 回答 2

3

当 Ctrl 和 V 键或 Shift 和 Insert 键按下时,有一个 hacky 解决方案会在文本区域上触发一个focus事件。[是的,它不适用于上下文菜单 -> 过去]

$(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 键时,该代码让指针聚焦在文本区域上。那时没有粘贴文本,它是在触发此 keydown 函数后粘贴的,因此粘贴的文本显示在 textarea 中。之后,在该 textarea 上的 keyup 上,#input1将被聚焦。

在键入此内容时,我发现可能有使用范围的键盘粘贴和鼠标粘贴解决方案。我也会尝试一下...

于 2010-02-09T20:49:58.267 回答
0

您应该将一个函数绑定到您的输入字段 onChange() 事件,并在每次调用此函数时复制其内容,然后处理数据。如果您对“粘贴”内容特别感兴趣(我不知道您要在那里做什么,但通常在必须另外处理粘贴内容的情况下这是一个不好的概念的标志)您可以尝试实施检查输入速度的计数器(例如每秒超过 xx 个字符 -> PASTE-Eventcall)

于 2010-08-14T16:37:08.623 回答