Как заблокировать ввод возврата каретки в текстовой области? - PullRequest
8 голосов
/ 19 мая 2011

Как заблокировать ввод возврата каретки, новой строки, одинарных и двойных кавычек в текстовой области с помощью asp.net mvc во время события нажатия клавиши?

Ответы [ 2 ]

28 голосов
/ 19 мая 2011

Вы можете использовать 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();
    }
});
2 голосов
/ 24 августа 2015

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