我的问题如下:
我有一个输入,简单如下:
<input type="text"/>
当我尝试粘贴一些包含新行的文本时,新行之后的所有文本都不会出现。
现在我知道这种类型的输入不应该支持这种行为,最好的情况是使用textarea
,但在我正在进行的当前项目中几乎无法实现。
但是,其他浏览器会将新行转换为空格字符,并在新行后面附加文本,以便最终将整个文本放在一行中。 IE不会这样做。
我发现以下solution to intercept paste event,我想也许我可以使用它将字符串转换为单行,但它在firefox中不起作用。我可以尝试浏览器检测,但我担心它在许多其他情况下也会失败。
我还能做些什么来让IE像其他浏览器一样运行,我最好的选择是什么?
我发现这个答案可能是你问题的解决方案:JavaScript get clipboard data on paste event (Cross browser)
它应该适用于IE6 +,FF 22 +,Chrome和Safari。
<input id='editableDiv' contenteditable='true' type="text"/>
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);
希望这有助于交配。