从 textarea 中删除换行符

Posted

技术标签:

【中文标题】从 textarea 中删除换行符【英文标题】:Remove line break from textarea 【发布时间】:2011-05-24 16:56:09 【问题描述】:

我有一个这样的文本区域:

<textarea tabindex="1" maxlength='2000' id="area"></textarea>

我用 jquery 看这个 textarea:

$("#area").keypress(function (e) 
    if (e.keyCode != 13) return;
    var msg = $("#area").val().replace("\n", "");
    if (!util.isBlank(msg))
    
        send(msg);
        $("#area").val("");
    
);

send() 如果按下返回键并且消息不是空白或仅包含行空格,则将消息提交给服务器。

问题:发送消息后,textarea没有清空。 在第一页加载时,文本区域为空。提交消息后,textarea中出现一个空白行,我不知道如何摆脱它。

【问题讨论】:

【参考方案1】:

问题在于 Enter 按键没有被抑制,并且正在执行其通常的浏览器行为(即添加换行符)。将return false 添加到您的按键处理程序的末尾以防止这种情况发生。

$("#area").keypress(function (e) 
    if (e.keyCode != 13) return;
    var msg = $("#area").val().replace(/\n/g, "");
    if (!util.isBlank(msg))
    
        send(msg);
        $("#area").val("");
    
    return false;
);

【讨论】:

replace 应该是replace(/\n/g, "");replace("\n", "") 只会删除第一个新行 @Orlando:那行代码直接来自问题,因此可能仅替换第一个换行符是 OP 的意图,但我同意这不太可能。 要与所有换行符保持一致,最好/(\r?\n|\r\n?)/ @AnirudhBalaji:jQuery 的 val() 方法将换行符标准化为 \n【参考方案2】:

托马斯,e.preventDefault();将需要包装在仅将其应用于回车键的条件中。

// Restrict ENTER.
if (e.keyCode == '13')  e.preventDefault(); 

整个函数看起来像这样(带注释):

// Key Press Listener Attachment for #area.
$("#area").keypress( function (event) 

    // If the key code is not associated with the ENTER key...
    if (event.keyCode != 13) 

        // ...exit the function.
        return false;

     else 

        // Otherwise prevent the default event.
        event.preventDefault();

        // Get the message value, stripping any newline characters.
        var msg = $("#area").val().replace("\n", "");

        // If the message is not blank now...
        if (!util.isBlank(msg)) 

            // ...send the message.
            send(msg);

            // Clear the text area.
            $("#area").val("");

        

    

 );

【讨论】:

【参考方案3】:

您需要使用 event.preventDefault() 函数来防止发生默认事件操作,在这种情况下添加输入字符:

$("#area").keypress(function (e) 
    e.preventDefault();
    if (e.keyCode != 13) return;
    var msg = $("#area").val().replace("\n", "");
    if (!util.isBlank(msg))
    
        send(msg);
        $("#area").val("");
    
);

【讨论】:

那行不通。可以想象,textarea 用于文本输入。如果我阻止默认操作,那么我将无法输入任何内容。

以上是关于从 textarea 中删除换行符的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 从 Textarea 中的每个换行符添加数字

React textarea 通过 API PUT 删除换行符保存到数据库

如何从textarea中获取换行符[重复]

从 textarea 复制到 div,保留换行符

如何删除textarea上的“自动换行”[重复]

Textarea换行符[重复]