Для удобства изменения текста, вызванного пользовательским перетаскиванием другого текста / элементов внутри текстовой области или вставкой текста внутри него, необходимо прослушать 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();
}
});