【发布时间】:2014-01-27 18:36:16
【问题描述】:
我正在开发一个 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();
}
【问题讨论】: