如何阻止在textarea中输入回车?
Posted
技术标签:
【中文标题】如何阻止在textarea中输入回车?【英文标题】:How to block entering carriage return in textarea? 【发布时间】:2011-08-28 12:07:19 【问题描述】:如何在按键事件期间使用asp.net mvc在文本区域中阻止输入回车、换行、单引号和双引号?
【问题讨论】:
如果你 A) 写完整的句子,并且 B) 表明你已经尝试解决你的问题,你会得到更多的帮助。 google.com/… @Nick ODell - 这不是真的尼克。 A)不是每个人都完全掌握英语,他的问题很容易理解,@Tim 可以编辑。 B) 没有任何问题是微不足道的。 【参考方案1】:您可以使用 jquery 并订阅 textarea 的 .keypress()
事件:
$('textarea').keypress(function(event)
// Check the keyCode and if the user pressed Enter (code = 13)
// disable it
if (event.keyCode == 13)
event.preventDefault();
);
【讨论】:
FWIW:如果您不想使用keypress
事件,您可以在keydown
事件期间使用.preventDefault()
抑制回车键的效果。当它遇到keyup
事件时,已经输入了回车。
我真的不明白为什么这是最终的解决方案。如果粘贴呢?最终的解决方案是在您提交表单时运行此功能,以便检查一次,而不是每次输入时。这似乎是一种浪费。
@TheMuffinMan 您可以通过侦听多个事件来调整 Darin Dimitrov 的解决方案,如果您反对,则会触发“更改”事件,您可以检查粘贴或拖动其中的文本以查找回车。
您是故意使用 ==,还是如果我使用 ===,它的工作方式是否相同?
@Mafii 是的,它始终如一地工作,因为 event.type
和 event.which
分别返回一个字符串和一个整数。但最重要的是,当这些属性具有您期望的值时,您希望您的代码按照您在事件处理程序中声明的方式工作。在任何其他情况下,您都可以避免不确定的结果,并且调试更容易。我采用严格的比较而不是松散的比较,多年来也有可能,我可以说我只有优势。【参考方案2】:
为了适应用户在文本区域内拖放其他文本/元素或在其中粘贴文本引起的文本修改,有必要在change
事件也是如此。
此外,我建议使用.on()
方法,从jQuery 1.7 开始可用,并通过事件对象的event.which
属性检测用户按下的回车键,以获得可靠的跨浏览器行为你的应用:
var $textarea = $('#comment');
// events to bind:
$textarea.on('keydown keyup change focus blur', function(e)
if (e.type === 'change')
// this event is triggered when the text is changed through drag and drop too,
// or by pasting something inside the textarea;
// remove carriage returns (\r) and newlines (\n):
$textarea.val($textarea.val().replace(/\r?\n/g, ''));
if (e.which === 13)
// the enter key has been pressed, avoid producing a carriage return from it:
e.preventDefault();
);
【讨论】:
以上是关于如何阻止在textarea中输入回车?的主要内容,如果未能解决你的问题,请参考以下文章