对不起我是javascript的新手,目前即将面临用户复制包含大量新行空间的文章的问题。我怎么能修剪它并使它只有1个新线?以及如何限制用户按"输入"键(新行)?
从其他来源复制一些文本并粘贴到textarea的示例,它将显示如下:
This is
//new line
//new line
//new line
//new line
//new line
Orange
//new line
//new line
//new line
Not apple
如何将其复制到textarea /从textarea输入
This is
orange
not apple
FIDDLE DEMO = FIDDLE
my fiddle output :
------------------
This is
Orange
not apple
Expected output :
-----------------
This is
Orange
not apple
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
如果我正确理解您,可以通过添加侦听器按 Enter 键来阻止用户插入换行符。像这样:
var textarea = document.getElementById("myTextArea");
textarea.addEventListener("keydown", function (e) {
if (e.keyCode == 13) { // keyCode 13 corresponds to the Enter key
e.preventDefault(); // prevents inserting linebreak
}
});
JSFiddle here
至于替换字符串中的多个新行,正如@adeneo在评论中指出的那样,您可以使用JavaScript的string.replace()
函数。您可以在监听textarea
事件的paste
上添加另一个侦听器,如下所示:
textarea.addEventListener("paste", handler);
其中handler
是一个可以定义的函数,用于清除换行符。这是一个小提琴,显示了这个:JSFiddle
答案 1 :(得分:0)
你期待两个\ n的文字。检查我的答案,我用jquery和没有jquery显示它。 据我所知,你可以通过模糊功能达到你的要求。
$("#withjquery").blur(function(){
$("#withjquery").val(($("#withjquery").val().replace(/\n\s*\n/g, '\n\n')));
});
function doFormat()
{
document.getElementById("withoutjquery").value = document.getElementById("withoutjquery").value.replace(/\n\s*\n/g, '\n\n');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<textarea id="withjquery" name="withjquery" rows="5" cols="40" ></textarea>
<textarea id="withoutjquery" name="withoutjquery" rows="5" cols="40" onblur="doFormat()" ></textarea>