Как лучше всего ограничить объем текста, который можно ввести в «текстовое поле»?

Как лучше всего ограничить объем текста, который пользователь может ввести в поле «textarea» на веб-странице? Речь идет о приложении ASP .NET, но предпочтительнее использовать ответ, не зависящий от платформы.

Я понимаю, что для этого, вероятно, потребуется некоторое количество javascript, поскольку я не хочу фактически выполнять `` публикацию '' с таким объемом данных, если это возможно, поскольку ASP .NET имеет верхний предел размера запроса, который он будет обслуживать (хотя я не знаю, что именно).

Так что, возможно, реальный вопрос в том, как лучше всего сделать это в javascript, который будет соответствовать следующим критериям:

-Должен работать одинаково хорошо для обоих пользователей, просто вводя данные и копируя / вставляя данные из другого источника.

- Должен быть максимально дружественным к «508 соответствию».

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
1 163
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Самой удобной идеей мне кажется решение наподобие Twitter-one. Обеспечьте визуальную индикацию того, что пользователь перешагнул максимум, но не ограничивайте его в наборе текста.

Какой бы Javascript вы ни использовали, вам все равно придется проверять его на стороне сервера. В противном случае пользователи с отключенным Javascript смогут обойти ваш лимит.

Ответ принят как подходящий

используйте элемент управления RegularExpressionValidator в ASP.Net для проверки количества символов вместе с обычной проверкой

Мне нравится этот вариант, потому что он автоматически выполняет проверку как на стороне сервера, так и на стороне клиента.

Joel Coehoorn 18.12.2008 19:27

Да, мне нравится этот вариант по той же причине.

Jesse Taber 18.12.2008 22:49

Как сказал Javache, вам все равно придется проверять серверную часть. Мы использовали jQuery плагин валидатора, который поддерживает максимальную длину среди тонов другого материала ...

function limit(element, max_chars)
{
    if (element.value.length > max_chars)
        element.value = element.value.substr(0, max_chars);
}

Как javascript, так и ...

<textarea onkeyup = "javascript:limit(this, 80)"></textarea>

Как XHTML. Замените 80 желаемым пределом. Во всяком случае, я так делаю.

Обратите внимание, что это предотвратит ввод пользователем ограничения в текстовом поле, однако пользователь все равно может обойти это, используя собственный javascript. Чтобы убедиться в этом, вы также должны проверить свой серверный язык.

Кроме того, здесь работает мой любимый метод обхода произвольной проверки ввода: паста с помощью мыши!

recursive 18.12.2008 19:28

@recursive not, если форма также использует onblur = "limit (this, 80)"

Piskvor left the building 18.12.2008 20:13

Я использую это там, где ограничение обязательно. Он также предоставляет пользователю количество оставшихся символов.

function CountLength(vControl)
    {
        var strValue = vControl.value;
        var vMax = 480;
        var vLeft = vMax - strValue.length;
        if (vLeft < 0)
        {
            vLeft = 0;
        }
        var vMessage = returnObjById('TextCounter');
        if (document.all)
        {
            vMessage.innerText = vLeft + ' characters remaining.';
        }
        else
        {   
            vMessage.textContent = vLeft + ' characters remaining.';
        }
        if (vLeft == 0)
        {
            vControl.value = vControl.value.substring(0, vMax);
        }
    }

Единственное, о чем я бы беспокоился с визуальным индикатором, - это то, насколько он будет соответствовать стандарту 508. Что с этим сделает программа чтения с экрана?

Jesse Taber 18.12.2008 22:47

Я не слишком хорошо знаком с программами чтения с экрана. Я предполагаю, что, если не будет обратной публикации, программа чтения с экрана все равно будет читать исходный текст, поскольку осталось 480 символов. Интересно, как они справляются с ajax?

personaelit 18.12.2008 23:36

jQuery также предоставляет здесь параметры. Параметры, параметры и параметры.

Другие вопросы по теме