如何禁用Enter / Return键因为它执行一个函数?

我有这个函数,其中#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('
'+text_value+'
'); $(textbox).val(""); } } });

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

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

在这里回答http://jsfiddle.net/Z9KMb/

event.preventDefault()怎么样

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

尝试这一个event.stopImmediatePropagation()

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

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

 $('#text_comment').live('keypress',function (e) { if(e.keyCode == 13) { textbox = $(this); text_value = $(textbox).val(); if(text_value.length > 0) { $(this).prev().append('
'+text_value+'
'); $(textbox).val(""); } return false; } });

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