将值粘贴到某个输入框但是在某些textarea中显示该值

时间:2011-12-29 14:16:58

标签: jquery paste

在这种情况下,我在同一页面上有一个输入框和一个文本区域。如果用户在输入框中粘贴了一些值,则该值应粘贴在文本区域中,而输入框中不应显示任何值,但焦点应保留在输入框中。

Here我已经实现了这一点。问题是,它适用于Chrome而不是IE或Mozilla。谁能告诉我我做错了什么?如何让它跨浏览器工作?

编辑:谢谢大家,为解决方案。但是我遇到的问题是你们提出的新观点,即文本的格式是如此。例如,如果我从Excel复制多行数据并粘贴,它将转换为单行数据。这很明显,就像修改后的代码here一样,我们实际上是在文本区域和输入框中复制输入框的值,所有格式都消失了。我最初的解决方案是与Chrome完美配合,而不是IE / Mozilla。但是,新解决方案适用于所有浏览器。如何保留粘贴文本的格式?

3 个答案:

答案 0 :(得分:2)

试试这个:http://jsfiddle.net/4nejh/13/

有点延迟,但是如果你调整超时它应该顺利工作

答案 1 :(得分:1)

我已经更新了小提琴,它的工作符合您的期望。

$("#pasteable").on('paste',function(event){
     setTimeout(function(){
        $("#target").val($("#pasteable").val());
        $("#pasteable").val("");
        $("#pasteable").focus();
         },100);
});

小提琴:http://jsfiddle.net/4nejh/10/

答案 2 :(得分:0)

这样的事情:

<div style="margin:20px;">
Paste here: <input id="pasteable" />
<br />
<br />
It should show here instead: <textarea  id="target"></textarea>
</div>
<script>
var $pasteable = $("#pasteable");
var $target = $('#target');
$pasteable.bind('paste',function(event){
    setTimeout(function(){
        $target.val($pasteable.val());    
        setTimeout(function(){
            $pasteable.val('');
        },0);
    },0);
});
</script>

http://jsfiddle.net/4nejh/16/