使用新行复制文本以在IE中不起作用

问题描述 投票:0回答:1

我的问题如下:

我有一个输入,简单如下:

<input type="text"/>

当我尝试粘贴一些包含新行的文本时,新行之后的所有文本都不会出现。

现在我知道这种类型的输入不应该支持这种行为,最好的情况是使用textarea,但在我正在进行的当前项目中几乎无法实现。

但是,其他浏览器会将新行转换为空格字符,并在新行后面附加文本,以便最终将整个文本放在一行中。 IE不会这样做。

我发现以下solution to intercept paste event,我想也许我可以使用它将字符串转换为单行,但它在firefox中不起作用。我可以尝试浏览器检测,但我担心它在许多其他情况下也会失败。

我还能做些什么来让IE像其他浏览器一样运行,我最好的选择是什么?

html internet-explorer copy-paste html-input
1个回答
2
投票

我发现这个答案可能是你问题的解决方案:JavaScript get clipboard data on paste event (Cross browser)

它应该适用于IE6 +,FF 22 +,Chrome和Safari。

HTML

<input id='editableDiv' contenteditable='true' type="text"/>

JavaScript的

function handlePaste (e) {
    var clipboardData, pastedData;

    // Stop data actually being pasted into input field
    e.stopPropagation();
    e.preventDefault();

    // Get pasted data via clipboard API
    clipboardData = e.clipboardData || window.clipboardData;
    pastedData = clipboardData.getData('Text');

    // Remove new line characters
    alert(pastedData);
    var res = pastedData.replace(/\r?\n|\r/g, );
}

document.getElementById('editableDiv').addEventListener('paste', handlePaste);

希望这有助于交配。

© www.soinside.com 2019 - 2024. All rights reserved.