Проверка Javascript: блокировать специальные символы
Как я могу запретить пользователям вводить специальные символы в текстовое поле. Я хочу, чтобы были введены только цифры и алфавиты ( набраны / вставлены ).
какие-либо образцы?
6 ответов
у вас есть два подхода к этому:
- Регистрация "события keypress". Если пользователь нажимает специальную символьную клавишу, остановите его прямо там
- проверьте событие "onblur": когда входной элемент теряет фокус, проверьте его содержимое. Если значение недопустимо, рядом с полем ввода отобразится предупреждение.
Я бы предложил второй метод, потому что его менее раздражает. Не забудьте также проверить onpaste
. Если вы используете только keypress, то мы можем Скопируйте и вставьте специальные символы, поэтому используйте onpaste
также ограничить вставку специальных символов
кроме того, я также предлагаю вам пересмотреть, если вы действительно хотите запретить пользователям вводить специальные символы. Потому что многие люди имеют $, #, @ и * в своих паролях.
Я предполагаю, что это может быть для предотвращения SQL-инъекции; если это так: лучше, чтобы вы обрабатывали серверные проверки. Или еще лучше, избежать ценностей и хранить их в база данных.
попробуйте это, эта функция позволяет буквенно-цифровые и пробелы:
function alpha(e) {
var k;
document.all ? k = e.keyCode : k = e.which;
return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57));
}
в вашем html:
<input type="text" name="name" onkeypress="return alpha(event)"/>
для специальных символов:
var iChars = "!@#$%^&*()+=-[]\\';,./{}|\":<>?";
for (var i = 0; i < document.formname.fieldname.value.length; i++) {
if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {
alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
return false;
}
}
в основном, просто используйте соответствующий обработчик onkeypress. См.http://www.qodo.co.uk/blog/javascript-restrict-keyboard-character-input/ и пример http://www.qodo.co.uk/wp-content/uploads/2008/05/javascript-restrict-keyboard-character-input.html
Это поможет вам... предположим, у вас есть форма с формой "formname" и текстовое поле с именем "txt". затем вы можете использовать следующий код, чтобы разрешить только афанумерные значения
var checkString = document.formname.txt.value;
if (checkString != "") {
if ( /[^A-Za-z\d]/.test(checkString)) {
alert("Please enter only letter and numeric characters");
document.formname.txt.focus();
return (false);
}
}
Я думаю, что проверка keypress
события не совсем адекватны, так как я считаю, что пользователи могут копировать/вставить в полях ввода, не вызывая вверх.
так onblur
, вероятно, несколько более надежный (но менее непосредственный).
чтобы действительно убедиться, что символы, которые вы не хотите, не вводятся в поля ввода(или текстовые поля и т. д.), Я думаю, вам нужно будет
- Регистрация
keypress
(Если вы хотите дать немедленную обратную связь) и - также проверить
onblur
, - а также проверка входов на сервере (что является единственным реальным способом убедиться, что ничего нежелательного не попадает в ваши данные).
образцы кода в других ответах будут отлично работать для выполнения проверок на стороне клиента (просто не полагайтесь только о проверке keypress
события), но, как было указано в принятом ответе, действительно требуется проверка на стороне сервера.