Я хочу замаскировать вводимый текст в следующем формате: Aa-1234, где 2 буквы — это инициалы штатов США, разделенные дефисом, а 4 цифры — это 4-значный почтовый индекс: как я мог это сделать с JavaScript?
Я хочу замаскировать вводимый текст в следующем формате: Aa-1234, где 2 буквы — это инициалы штатов США, разделенные дефисом, а 4 цифры — это 4-значный почтовый индекс: как я мог это сделать с JavaScript?
Вы пробовали эту библиотеку JQuery?
http://digitalbush.com/projects/masked-input-plugin/
Он делает именно то, что вы хотите. Он не проверяет пользовательский ввод, он форматирует
input text
для ввода данных с маской, которую вы ему передаете.В вашем случае он будет создан следующим образом:
Я не совсем понимаю, что вы подразумеваете под маской слова, но я думаю, что ваша цель состоит в том, чтобы проверить, что текст, предоставленный пользователем через ввод, имеет нужный вам формат, в этом случае это что-то вроде «нас-1234» или "нас-2375" и т.д. Чтобы убедиться, что данная строка соответствует требуемому формату, вы можете использовать регулярные выражения.
Регулярное выражение, моделирующее приведенный выше формат, выглядит следующим образом:
Это означает, что в начале строки должна быть буква u, за которой следует s и дефис, а затем 4 цифры от 0 до 9, конец строки — это знак $.
Чтобы использовать это в своем приложении, вам нужно использовать его следующим образом:
В
input
вы можете использовать атрибутpattern
вместе с регулярным выражением, чтобы гарантировать, что ввод имеет нужный формат. Недостатком является то, что он пока не поддерживается всеми браузерами: он будет работать для Chrome, Firefox, Opera или IE10+, но не будет работать с Safari.Итак, что вам нужно сделать, это найти регулярное выражение, которое соответствует тому, что вы хотите. Идея будет примерно такой:
Таким образом, у вас может быть такое регулярное выражение:
^[a-zA-Z]{2}-[0-9]{5}$
которое в сочетании с атрибутомpattern
будет выглядеть так:Другой вариант (на случай, если он
pattern
не сработает) — сделать это с помощью JavaScript с тем же регулярным выражением. При отправке формы JavaScript проверяет, соответствует ли поле нужному формату, и если нет, отображается сообщение об ошибке, и оно не отправляется.В JavaScript это будет выглядеть так:
Теперь, зная, что количество штатов ограничено (50) и что есть некоторые особые случаи (территории, иностранный код), вы можете дополнительно ограничить две разрешенные буквы только допустимыми (например: AL, AK , TX...), а регулярное выражение может быть таким: