我正在开发一个AJAX聊天室。我的问题是,现在当我按下回车键时,偶尔会在textarea中留下一个空的换行符。到目前为止,我试图用.val(''),. text(''),. html('')和.empty()删除它,但它们都没有用。 preventDefault()命令似乎被触发了,因为我不经常得到这个错误但是当它确实发生时,它会一直被触发。到目前为止,我甚至都没有弄清楚导致这种变化的原因。有没有人知道我做错了什么?
这是代码。我正在抓住关键事件,
$("textarea[name='input']").keydown(function(event) {
key = event.which;
if(key == 13) {
event.preventDefault();
submitInput();
}
});
然后用
发送带有AJAX的输入句柄function submitInput() {
activeRoom = $(".tabs .active span").text();
message = $("textarea[name='input']").val();
message = message.trim();
if(message != "") {
if(message.charAt(0) == "/") {
// Catch slash commands
}
else {
$.ajax({
url: "ajax/message_send.php",
data: { nickname: nickname, room_name: activeRoom, message : message },
async: false
})
.done(function(data) {
getMessages(activeRoom);
clearInput();
});
}
}
}
目前无法正常工作的功能如下所示。它非常简单,部分原因是因为我不知道要添加什么来使它工作。我有我的控制台日志向我显示函数被触发和完成的顺序,这是最后一次或直接在getMessages()之后。它应该工作......不是吗?
function clearInput() {
// Empty input
$("textarea[name='input']").val('');
// Put input in focus
$("textarea[name='input']").focus();
}
答案 0 :(得分:0)
你试过这个吗?
message = message.replace(/ ^(\ n)/,'');
答案 1 :(得分:0)
我刚发现了这个问题。如果按Enter键太长时间,keydown事件会多次触发。将事件更改为按键,一切正常。