jquery .empty()与keypress事件冲突

时间:2012-05-14 05:43:04

标签: javascript jquery

这意味着允许用户键入消息,然后按Enter键发送消息。这应该清除该框,以便用户可以键入新消息。问题是,在 .empty()事件之后,按下enter(创建换行符)的标准结果正在发生....所以文本消失并被换行替换,这是相当的不可取的。我怎么能绕过这个?

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

3 个答案:

答案 0 :(得分:4)

您可以阻止keypress通过event.preventDefault()(或return false来自您的事件处理函数的默认操作,这是preventDefault + {{1}的jQuery简写}):

Live example | source

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)

demo

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