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