#javascript #regex
Вопрос:
Будет ли этот код блокировать $ % # или ( как я печатаю?
var digitsOnly = /[0-9]/g;
var emailOnly = /[a-zA-Z0-9_.@-]/g;
var alphaOnly = /[a-zA-Z]/g;
var dateOnly = /[0-9/]/g;
function restrictKeys(myfield, e, restrictionType) {
if (!e) var e = window.event
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code);
// if they pressed esc... remove focus from field...
if (code==27) { this.blur(); return false; }
// ignore if they are press other keys
// strange because code: 39 is the down key AND ' key...
// and DEL also equals .
if (!e.ctrlKey amp;amp; code!=9 amp;amp; code!=8 amp;amp; code!=36 amp;amp; code!=37 amp;amp; code!=38 amp;amp; (code!=39 || (code==39 amp;amp; character=="'")) amp;amp; code!=40) {
if (character.match(restrictionType)) {
return true;
} else {
return false;
}
}
}
Комментарии:
1. Я думаю, что вам следует просто попробовать это.
2. Ваше выражение электронной почты нуждается в некоторой доработке
3. Я пробовал, но этот код не блокирует символы, о которых я упоминал.
4. Попробуйте повторить код, который вы получаете с каждым ключом. Используйте предупреждение()
5. @austinbv Я знаю, что это будет что-то вроде этого /^[a-zA-Z0-9._ -] @[a-zA-Z0-9. -] . [a-zA-Z]{2,4}$/ (хотя это не самый лучший вариант), но он не работает так, как соответствует шаблону при вводе… Спасибо.
Ответ №1:
Будет ли этот код блокировать $ % # или ( как я печатаю?
Нет. Обнаружение нажатых клавиш бесполезно, пользователи могут вставлять или перетаскивать текст в элементы управления формами, чтобы коды клавиш не совпадали с вводимым текстом (или вообще не запускали ключевое событие). Кроме того, вы заботитесь о ценности только при отправке формы, какая бы ценность она ни имела в то же время, для вас это не имеет значения.
Проверка содержимого формы контроля при отправке, ограничение ввода с клавиатуры любыми способами очень и очень раздражает пользователей и легко обходится.