jquery .empty() 与按键事件冲突

jquery .empty() conflict with keypress event

本文关键字:事件 冲突 empty jquery      更新时间:2023-09-26
这意味着

允许用户键入消息,然后按回车键发送。这应该会清除该框,以便用户可以键入新消息。问题是按回车键(创建换行符(的标准结果发生在 .empty(( 事件之后。所以文本消失了,取而代之的是换行符,这是非常不可取的。我怎样才能规避这种情况?

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

您可以通过 event.preventDefault()(或从事件处理程序函数中return false,这是 preventDefault + stopPropagation 的 jQuery 简写(阻止keypress的默认操作:

现场示例 | 来源:

.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,我可能会使用带有空字符串而不是emptyval来清除文本区域,因为val专门用于设置表单字段 的值——但如果empty()对您有用......

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

演示

$('#messagebox').on('keydown',function(e) {
    if (e.which === 13) {
        send();
        $(this).val('');
        e.preventDefault();
    }
});