【问题标题】:jQuery ie issue with on paste (content with break)粘贴时出现的 jQuery ie 问题(带中断的内容)
【发布时间】:2013-06-19 03:42:10
【问题描述】:

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

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) 会出现在第二个输入中。但是其他浏览器你会得到所有的内容。

谁能帮帮我 谢谢,

【问题讨论】:

  • 这在 IE9 中运行良好。
  • 即使在 IE9 上我也无法让它工作。你注意到换行符了吗?
  • 对不起,首先我误解了你的问题,请检查我的答案。

标签: javascript jquery


【解决方案1】:

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

【讨论】:

  • 谢谢,看起来不错。一个问题。其他浏览器如 FF 或 chrome 会忽略这段代码对吧?
  • @ComeRun 是的,这不会对其他浏览器造成任何问题。 if (window.clipboardData)此代码仅适用于 IE。
  • 我可以粘贴第一个输入中的所有内容,但粘贴后第二个输入为空。我希望将内容复制到第二个。你没有这个问题吗?
  • 我在谈论你的 jfiddle 链接。在第一个输入中粘贴内容时,第二个输入没有得到内容
  • @ComeRun 我在 IE9 中没有发现任何问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 2012-07-21
    • 2019-10-01
    • 2010-10-12
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多