проверить текстовую область для определенных комбинаций символов - PullRequest
0 голосов
/ 18 августа 2010

У меня есть текстовая область, которая заполняется различными способами, включая вставку, ввод с клавиатуры, автозаполнение и т. Д.

Теперь я хочу проверить эту текстовую область и, если она содержит какую-либо комбинацию, включая кратные числа некоторых символов, и, если это так, установить для нее пустое значение.

Символы, которые я хочу отфильтровать: символы табуляции, новые строки, пробелы, возврат каретки, а также некоторый текст водяного знака - в основном любой не значащий символ.

Обратите внимание, что допустимый текст может содержать специальные символы, такие как ()! #% <>,;: / || {} [] и, возможно, еще несколько.

Допустимые значения могут содержать новые строки, пробелы и т. Д., Но также могут содержать другие допустимые символы (цифры выше плюс 0-9, a-z, A-Z и т. Д.)

В настоящее время у меня есть следующее завершение в событие JQuery .change:

<textarea cols="70" rows="3" class="cssTextarea cptEntryArea formFocus"></textarea>

$('.cptEntryArea').live('change', function(e)
{
    var myval = "";
    myval = $(this).val().trim();
    myval.replace(/\r\n|\r|\n|\u0085|\u000C|\u2028|\u2029|^\s*$|^\s+|\s+$/g, "");
    if ((myval == watermarkText) || (myval.length == 0))
    {
        $(this).val("");
        e.stopPropagation();
        return false;
    };
});

Идея состоит в том, чтобы просто очистить его, если в нем есть «невизуальные» символы в любой комбинации.

Любая оптимизация или лучший способ сделать это?

РЕДАКТИРОВАТЬ1: Похоже, что я могу сделать некоторые настройки здесь, как JQuery обрезка:

trim: function( text ) {
        return (text || "").replace( /^\s+|\s+$/g, "" );
    }

Ответы [ 2 ]

0 голосов
/ 20 августа 2010

Когда все закончилось, мне пришлось более эффективно управлять своими нажатиями клавиш, а также управлять событиями конечного результата. Мое решение - довольно сложная интерактивная страница, где несколько методов используются для заполнения значения настраиваемыми опциями, какие группы методов и допустимые значения допустимы, таким образом, сложность разрешения.

различные методы, используемые для заполнения текстовой области:

  • Свободная форма (введено пользователем)
  • Автозаполнение - проверяется и выбирается из введенной пользователем строки для создания списка выбора.
  • Текст ДОЛЖЕН точно соответствовать базе данных
  • Текст произвольной формы разрешен, но соответствующий идентификатор должен быть в базе данных
  • Новый текст пользователя разрешен, но должен быть опубликован как новое значение в списке выбора
  • программируемое население (извлечение из базы данных / другое значение и заполнение)

Все это усложняет правила проверки, однако другой ответ принимается, поскольку он лучше всего помог решить проблему.

Обратите внимание, что на самом деле здесь задействовано несколько нажатий клавиш с различными действиями, основанными на нажатии клавиш и опциях в игре для конкретного пользователя.

Спасибо всем за помощь.

0 голосов
/ 19 августа 2010

Звучит как очень странная вещь. Для чего нужен текст водяного знака? Не лучше ли поймать до того, как текст будет помещен в текстовую область, т.е. при нажатии клавиши, вернуть ноль, если значение ascii <33? Ваше событие срабатывает только тогда, когда элемент изменен / потерял фокус, а не сразу после ввода какого-либо текста. </p>

Вы можете попробовать сделать /mg для регулярного выражения multi-line.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...