jquery zip маскировка для нескольких форматов
-
29-09-2019 - |
Вопрос
У меня есть требования к маскированию поля ZIP, чтобы он допускал классические 5-цифры Zip (xxxxx) или формата 5 + 4 (xxxxx-xxxx).
Я мог так что-то вроде:
$('#myZipField').mask("?99999-9999");
Но осложнение происходит от того, что пример не следует отображать, если пользователь помещает только 5 цифр.
Это лучшее, что я придумал до сих пор - я мог бы продлить его, чтобы автоматически вставить тире, когда они вставляют 6-й цифр, но проблема с этим было бы забавное поведение в делеции (я мог бы остановить их от удаления примерных исправления патча и так далее, это становится кошмаром):
$.mask.definitions['~']='[-]';
$("#myZipField").mask("?99999~9999", {placeholder:""});
Есть ли какие-либо из коробчатого способа сделать это или я должен катиться?
Решение
Вам не нужно использовать другой плагин. Просто переместите знак вопроса, чтобы вместо:
$('#myZipField').mask("?99999-9999");
Вы должны использовать:
$('#myZipField').mask("99999?-9999");
В конце концов, это не вся строка, которая не является обязательной, просто -
и дальше.
Другие советы
Если вы уже используете jQuery, вероятно, есть сотни плагинов для масок и т. Д., Например:http://www.meiocodigo.com/projects/meiomask/
Так что я не думаю, что вам придется катиться
Этот почтовый индекс на самом деле прост, но когда у вас есть более сложный формат для обработки, вот как он решается с плагином (из Демострационная страница):
var options = {onKeyPress: function(cep, e, field, options){
var masks = ['00000-000', '0-00-00-00'];
mask = (cep.length>7) ? masks[1] : masks[0];
$('.crazy_cep').mask(mask, options);
}};
$('.crazy_cep').mask('00000-000', options);
Почему бы не иметь поле прозрачного, и иметь текстовый объект за ним с формой в светло-сером? Итак, они видят ####### - #### на заднем плане, а затем установите его, чтобы буквы исчезнули, когда они типа. В этот момент это говорит о том, что они должны ввести черту, если они хотят поставить дополнительные четыре, верно? Затем вы могли бы просто установить скрипт, чтобы автоматизировать дефис, если они испортится и введите 6 номеров?