2011-05-19 110 views
7

在按键事件过程中,我如何阻止在使用asp.net mvc的textarea中输入回车符,换行符,单引号和双引号?如何阻止在textarea中输入回车符?

+0

如果你A)写完整的句子,并且B)表明你试图解决你的问题,你会得到更多的帮助。 http://www.google.com/search?q=javascript+prevent+certain+characters+from+being+entered – 2011-05-19 01:09:10

+1

@Nick ODell - 那不是真的Nick。 A)并非每个人都完全掌握了英语,他的问题很容易理解为@Tim编辑。 B)没有问题太小。 – jfar 2011-05-19 04:45:26

+0

本网站包含任何人可能需要的所有键码列表:http://www.expandinghead.net/keycode.html – 2011-08-13 22:43:33

回答

27

你可以使用jQuery和认购.keypress()事件的文字区域:

$('textarea').keypress(function(event) { 
    // Check the keyCode and if the user pressed Enter (code = 13) 
    // disable it 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
    } 
}); 
+4

FWIW:如果您不想使用'keypress'事件,您可以禁止输入键的通过在'keydown'事件中使用'.preventDefault()'来实现效果。当它碰到'keyup'事件时,回车已经输入。 – Jason 2013-02-09 21:59:12

+6

我真的不明白为什么这是最终的解决方案。如果你粘贴什么?最终的解决方案是在提交表单时运行此函数,以便检查一次,而不是每次键入它。这只是一种浪费。 – 2013-07-13 20:54:02

+0

@ TheMuffinMan您可以通过听取多个事件来调整Darin Dimitrov的解决方案,如果您的反对意见触发了“更改”事件,并且您可以检查粘贴或拖动它的文本以查找回车。 – 2015-08-23 21:40:43

2

要舒服引起用户的拖动文本的修改和删除其它文本/元素 textarea的内部或在其中粘贴文字,也需要在change事件中听取。此外,我建议使用自从jQuery 1.7开始可用的.on()方法,并检测用户通过事件对象的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(); 
    } 
}); 
相关问题