如何禁用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’呢?