jQuery即on paste上的问题(带有break的内容)

时间:2013-06-19 03:42:11

标签: javascript jquery

我想在输入字段中粘贴内容(我必须使用输入字段)并将粘贴的内容粘贴到其他输入。我的内容如下(复制所有行和粘贴):

1234
4567
4321

在所有浏览器上以下链接正常但IE

http://jsfiddle.net/5bNx4/42/

        $editor.on('paste', function() {
var $self = $(this);            
              setTimeout(function(){ 
                var $content = $self.val();             
                $clipboard.val($content);
            },100);
     });

使用IE时和粘贴内容时,只有第一行(1234)会出现在第二个输入中。但是其他浏览器可以获得所有内容。

任何人都可以帮助我 谢谢,

2 个答案:

答案 0 :(得分:6)

IE无法处理新行,它只会粘贴在第一行并忽略其余行。 用空格替换换行符可以解决问题。

clipped = clipped.replace(/(\r\n|\n|\r)/gm, " "); //replace newlines with spaces

要克服将以下代码添加到您的脚本中,这将正常工作。

if (window.clipboardData) {
    $('#editor').bind('paste', function (e) {
        var clipped = window.clipboardData.getData('Text');
        clipped = clipped.replace(/(\r\n|\n|\r)/gm, " "); //replace newlines with spaces
        $(this).val(clipped);
        return false; //cancel the pasting event
    });
}

在IE浏览器中查看此JSFiddle

参考: Allow Pasting Multiple Lines in IE Textbox

编辑:已移除console.log

Updated JSFiddle

答案 1 :(得分:1)

我不认为IE支持'输入'中的换行符。这意味着您甚至无法将多行粘贴到“输入”中。您可以使用'textarea'代替或在粘贴到达输入之前操作粘贴并删除新行。