2

这意味着允许用户输入一条消息,然后按回车键发送它。这应该清除该框,以便用户可以输入新消息。问题是在 .empty() 事件之后发生按 enter 的标准结果(创建换行符) ......所以文本消失并被换行符替换,这是非常不可取的。我该如何规避这个?

  $('#messagebox').keypress(function(event) {
        if (event.keyCode == '13') {
            send();
            $('#messagebox').empty();
        }
    }); 
4

3 回答 3

4

您可以阻止keypressvia的默认操作event.preventDefault()(或return false从您的事件处理函数,它是preventDefault+的 jQuery 简写stopPropagation):

实例| 来源

HTML:

<p>Pressing Enter will clear the text area below:</p>
<textarea id="messagebox" rows="10" cols="50"></textarea>

JavaScript:

jQuery(function($) {

  $("#messagebox").focus().keypress(function(event) {
    if (event.keyCode === 13) {
      $(this).val("");
      event.preventDefault();
    }
  });

});

FWIW,我可能会使用val空字符串而不是empty清除文本区域,因为val专门用于设置表单字段的值 - 但如果empty()对你有用......

于 2012-05-14T05:44:30.120 回答
2
$('#messagebox').keypress(function(event) {
    if (event.keyCode == '13') {
        event.preventDefault();
        send();
        $(this).empty();
    }
}); 
于 2012-05-14T05:46:02.523 回答
1

演示

$('#messagebox').on('keydown',function(e) {
    if (e.which === 13) {
        send();
        $(this).val('');
        e.preventDefault();
    }
}); 
于 2012-05-14T05:55:18.117 回答