jquery粘贴到输入 - 如果多次执行错误

时间:2012-02-28 19:45:38

标签: javascript jquery

我正在使用这样的东西捕获粘贴到输入框中的东西。

$(".inputTextArea").bind('paste', function(e) {
        var el = $(this);
        setTimeout(function() {
            var text = $(el).val();
        alert(text);
        }, 100);
});

这样可以正常工作,但如果我复制其他文本,删除该字段的内容并粘贴新复制的文本,然后它只显示以前粘贴的文本。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西http://jsfiddle.net/wdbbv/

$(".inputTextArea").bind('paste', function(e) {
        var el = $(this), range = getSelectionRange(el.get(0)); 
        setTimeout(function() {
            var text = el.val().substr(range[0], el.val().length - range[1] 
                                                                 - range[0]);
            alert(text);
        }, 100);
});

function getSelectionRange(el) {
    if ('selectionStart' in el) {
        return [el.selectionStart, el.value.length - el.selectionEnd];          
    } else if (document.selection) {
        var range = document.selection.createRange(), 
            stored_range = range.duplicate();
        stored_range.moveToElementText(el);
        stored_range.setEndPoint('EndToEnd', range);
        return [stored_range.text.length - range.text.length, 
                el.value.length - (el.selectionStart + range.text.length)];
    }
    return null; // modify it any way for unsupported browsers
}​

或者您可以尝试实施此处描述的方法http://groups.google.com/group/google-web-toolkit/browse_thread/thread/09a3527707d22be0 它使用与剪贴板的直接交互。