如何禁用Enter / Return键执行函数后呢?

时间:2011-06-15 09:03:03

标签: javascript jquery keyboard keycode

我有这个功能,其中#text_comment是textarea的ID:

$('#text_comment').live('keypress',function (e) {

    if(e.keyCode == 13) {
        textbox = $(this);
        text_value = $(textbox).val();

        if(text_value.length > 0) {
            $(this).prev().append('<div id="user_commenst">'+text_value+'</div>');
            $(textbox).val("");
        } 
    }                                               
});

正在发生的事情是当输入/返回键被击中时(keyCode 13)文本正在附加,但是它也将文本向下移动一行,因为输入/返回键应该是。

即使我将文本框的值设置为“”,也​​会发生这种情况。

5 个答案:

答案 0 :(得分:4)

event.preventDefault()

怎么样?

答案 1 :(得分:2)

输入if(e.keyCode == 13)案例时,请尝试并停止您的事件传播(请参阅http://snipplr.com/view/19684/stop-event-propagations/)。

答案 2 :(得分:2)

试试这个event.stopImmediatePropagation()

$('#text_comment').live('keypress',function (e) {       
          if(e.keyCode == 13) {   
               e.stopImmediatePropagation()
       ///rest of your code
  }
});

答案 3 :(得分:2)

我已经对此进行了测试,这是有效的。输入不会创建新行。

$('#text_comment').live('keypress',function (e) {

    if(e.keyCode == 13) {
        textbox = $(this);
        text_value = $(textbox).val();

        if(text_value.length > 0) {
            $(this).prev().append('<div id="user_commenst">'+text_value+'</div>');
            $(textbox).val("");
        }
        return false;
    }                                               
});

虽然我想知道,如果你不想换新行,你为什么要使用textarea,为什么不使用输入类型='text'呢?

答案 4 :(得分:1)