Как я могу запретить пользователям вводить специальные символы в текстовое поле. Я хочу ввести только цифры и алфавиты (напечатано/вложено).Проверка Javascript: заблокировать специальные символы
Любые образцы?
Как я могу запретить пользователям вводить специальные символы в текстовое поле. Я хочу ввести только цифры и алфавиты (напечатано/вложено).Проверка Javascript: заблокировать специальные символы
Любые образцы?
У вас есть два подхода к этому:
Я предлагаю второй метод, потому что его менее раздражает. Не забудьте также проверить onpaste
. Если вы используете только клавиши, то мы можем скопировать и вставить специальные символы, поэтому используйте onpaste
также для ограничения вставки специальных символов
Кроме того, я также предлагаю вам пересмотреть, если вы действительно хотите запретить пользователям вводить специальные символы. Потому что многие люди имеют $, #, @ и * в своих паролях.
Я полагаю, что это может быть сделано для предотвращения внедрения SQL; если да: лучше, чтобы вы обрабатывали серверные проверки. Или еще лучше, избегайте значений и храните их в базе данных.
В основном, просто используйте соответствующий обработчик 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». то вы можете использовать следующий код, чтобы разрешить только aphanumeric значения
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);
}
}
Попробуйте это, эта функция позволяет алфавитно-цифровой и пространства:
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 = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?";
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;
}
}
Я думаю, что проверка keypress
события не вполне адекватно, так как я считаю, пользователи могут копия/вставка в поля ввода без запуска нажатия клавиши.
So onblur
, вероятно, несколько более надежный (но менее непосредственный).
Чтобы действительно убедиться, что символы, которые вы не хотите, не вводятся в поля ввода (или текстовых областей и т.д.), я думаю, вам нужно
keypress
(если вы хотите, чтобы дать немедленную обратную связь) иonblur
,Образцы кода в других ответов будет прекрасно работать для выполнения на стороне клиента проверки (только не полагаться только на проверку keypress
события), но, как было указано в принятом ответе сервера действительно требуется проверка на стороне.
Ограничительный ввод не обязательно ограничительный, возможно, введите номера телефонов, почтовые индексы, даты и т. Д. Но +1 к совету удвоить проверку на стороне сервера! – PhiLho