#javascript #jquery #html #regex
#javascript #jquery — запрос #HTML #регулярное выражение #jquery
Вопрос:
Я работаю над формой ввода текста, которая требует, чтобы пользователь ввел букву «а», за которой следуют 6 исходящих чисел (0-9).
(a|)d{6}
JS не позволяет пользователю вводить что-либо, кроме строки в этом формате.
Однако мне не везет. Пример моего кода находится здесь
Комментарии:
1. @AvinashRaj — нет, я пытаюсь, чтобы буква предшествовала цифрам
2. @VisioN — все еще безуспешно
3. поместите
[0-9]
вместоd
.4. @AvinashRaj
d == [0-9]
5. @AmitJoki в некоторых языках мы должны использовать наиболее подходящий. Например, в . Net мы не используем
d
. Потому что он соответствует символам другого языка.
Ответ №1:
Это очень плохая идея — запретить пользователю вводить все, что он хочет. Вот почему:
Допустим, я пропустил клавишу, которую намеревался нажать, и в итоге ввел эту последовательность нажатий клавиш:
a123rBackspace456
Я бы ожидал, что мой промах был бы стерт моим обратным пространством, а остальная часть ввода прошла через него. Представьте, как я был бы удивлен, увидев там вместо этого «a12456», потому что ваш код уже не давал мне печатать r, а это значит, что мой Backspace стер 3
!
Вместо этого попробуйте это:
<input type="text" name="code" pattern="a[0-9]{6}" required
title="Please enter an amp;quot;aamp;quot; followed by six digits." />
Эта функция HTML5 предотвратит отправку формы, если пользователь не введет данные в правильном формате. Это, в сочетании с подтверждением на стороне сервера, будет работать прекрасно. Кроме того, это работает даже в том случае, если у пользователя отключен JavaScript!
Тем не менее, для такого конкретного формата, возможно, было бы более полезно сделать это:
a<input type="text" name="code" pattern="[0-9]{6}" required
title="Please enter six digits" />
Таким образом, буква «а» уже есть и ее не нужно вводить, в результате чего пользователю остается ввести только ту часть, которая изменяется. На сервере просто вставьте «a» обратно в него.