Javascript 从文本区域中删除换行符

Javascript 从文本区域中删除换行符,javascript,jquery,html,textarea,Javascript,Jquery,Html,Textarea,我有这样一个文本区: 我用jquery查看这个文本区域: $("#area").keypress(function (e) { if (e.keyCode != 13) return; var msg = $("#area").val().replace("\n", ""); if (!util.isBlank(msg)) { send(msg); $("#area").val(""); } }); 如果按了返回键并且消

我有这样一个文本区:

我用jquery查看这个文本区域:

$("#area").keypress(function (e) {
    if (e.keyCode != 13) return;
    var msg = $("#area").val().replace("\n", "");
    if (!util.isBlank(msg))
    {
        send(msg);
        $("#area").val("");
    }
});
如果按了返回键并且消息不是空的或仅包含空格,则send()会将消息提交给服务器

问题:发送消息后,文本区域未被清除。
在第一次页面加载时,文本区域为空。提交邮件后,文本区域中有一个空行,我不知道如何消除它。

问题是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;
});

您需要使用event.preventDefault()函数来防止发生默认事件操作,在本例中,添加enter字符:

$("#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("");
    }
});

托马斯,e;将需要包装在一个仅将其应用于enter键的条件中

// Restrict ENTER.
if (e.keyCode == '13') { e.preventDefault(); }
整个函数如下所示(带注释):


那不行。正如您所想象的,textarea用于文本输入。如果阻止默认操作,则无法输入任何内容。替换应为
replace(/\n/g,“”)替换(“\n”,”)将只删除第一个新的line@Orlando:这行代码直接来自于问题,因此可能只是替换了OP想要的第一个换行符,但我同意这不太可能。为了与所有换行符保持一致,
/(\r?\n | \r\n?)/
是最好的。@AnirudhBalaji:jQuery的
val()
方法将换行符规范化为
\n
。为了优雅一点,我认为您只需检查
如果(event.keyCode==13){//do something;}
并保存额外的3行代码,如果keyCode不等于13,则返回false。
// 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("");

        }

    }

} );