Textarea限制输入按下&从新线修剪空白区域

时间:2014-11-07 03:33:12

标签: javascript html textarea

对不起我是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

任何帮助将不胜感激。谢谢!

2 个答案:

答案 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>