这意味着允许用户键入消息,然后按Enter键发送消息。这应该清除该框,以便用户可以键入新消息。问题是,在 .empty()事件之后,按下enter(创建换行符)的标准结果正在发生....所以文本消失并被换行替换,这是相当的不可取的。我怎么能绕过这个?
$('#messagebox').keypress(function(event) {
if (event.keyCode == '13') {
send();
$('#messagebox').empty();
}
});
答案 0 :(得分:4)
您可以阻止keypress
通过event.preventDefault()
(或return false
来自您的事件处理函数的默认操作,这是preventDefault
+ {{1}的jQuery简写}):
HTML:
stopPropagation
JavaScript的:
<p>Pressing Enter will clear the text area below:</p>
<textarea id="messagebox" rows="10" cols="50"></textarea>
FWIW,我可能会使用val
使用空字符串而不是empty
来清除textarea,因为jQuery(function($) {
$("#messagebox").focus().keypress(function(event) {
if (event.keyCode === 13) {
$(this).val("");
event.preventDefault();
}
});
});
专门用于设置表单字段的值 - 但是如果{ {1}}正在为你工作......
答案 1 :(得分:2)
$('#messagebox').keypress(function(event) {
if (event.keyCode == '13') {
event.preventDefault();
send();
$(this).empty();
}
});
答案 2 :(得分:1)
$('#messagebox').on('keydown',function(e) {
if (e.which === 13) {
send();
$(this).val('');
e.preventDefault();
}
});