Как проверить специальные символы в текстовом поле и показать введенные специальные символы в сообщении об ошибке? - PullRequest
0 голосов
/ 24 августа 2010

Существует текстовое поле и кнопка, которая проверяет запись внутри текстового поля.
Это, если оно не должно проверять наличие недопустимых символов в форме.
Предположим, я ввел следующее слово "Lorem #% ipsum"^ "

При нажатии кнопки должно произойти две вещи

  • Если есть какие-либо специальные символы, такие как # $% ^ &, то отправка формы должна завершиться неудачей.
  • Должно появиться сообщение об ошибке типа «Вы использовали недопустимые символы #,% и ^ в своей форме»

Какой метод лучше?
PS: Iхотел бы решение, не связанное с jquery.

Ответы [ 2 ]

4 голосов
/ 24 августа 2010

Вы можете сделать это:

var invalidChars = str.match(/[^\w ]/g), output = '';
if (invalidChars) {
    invalidChars = invalidChars.unique();
    var lastInvalidChar = invalidChars.pop();
    output = 'You have used the illegal character' + (invalidChars.length > 0 ? 's' : '') + ' ' +
        invalidChars.join(', ') + (invalidChars.length > 0 ? ' and ' : '') + lastInvalidChar;
}

Здесь match и регулярное выражение /[^\w ]/g используется для получения всех символов, которые не являются ни символами слова, ни пробелом.Затем массив совпадающих недопустимых символов очищается от дубликатов с помощью пользовательского метода unique (см. Ниже).Затем последний недопустимый символ удаляется из массива, чтобы добавить его в случае необходимости с помощью «и» в конце выходных данных.Оставшиеся недопустимые символы (если они есть) затем объединяются запятыми и объединяются с последним недопустимым символом.

Поскольку в JavaScript нет встроенного метода unique для удаления дубликатов, вы можете использовать этот метод:

Array.prototype.unique = function() {
    var index = {};
    for (var i=0; i<this.length; ++i) {
        if (!index.hasOwnProperty(this[i])) {
            index[this[i]] = this[i];
        }
    }
    var clean = [];
    for (var prop in index) {
        if (index.hasOwnProperty(prop)) {
            clean.push(index[prop]);
        }
    }
    return clean;
};

Обратите внимание, что эта реализация не является типобезопасной, поскольку значения используются в качестве имен свойств и, следовательно, превращаются в строки.Так ["3",3].unique() возвращает ["3"] отсюда "3".toString() === (3).toString().

3 голосов
/ 24 августа 2010
var myString = document.getElementById("myInputField").value; // gets the sentence
var invalidChars = myString.replace(/[^#%\^]*/g, ""); //gets the chars | "#%^" in your case
var response = "";

for(var  i = 0; i < invalidChars.length; i+){
  response += (i > 0? (i == invalidChars-1 ? " and ": ", "):"") + invalidChars[i];
}

if (response != "") {
  alert("Your data contains invalid characters " + response);
}

Для получения дополнительной информации о регулярных выражениях js, ознакомьтесь с

http://www.regular -expressions.info / javascript.html

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