У меня есть требования для маскирования поля zip так, чтобы оно позволило классические 5 zip цифр (XXXXX) или 5 + 4 формата (XXXXX-XXXX).
Я мог так что-то как:
$('#myZipField').mask("?99999-9999");
но сложность прибывает из того, что тире не должен показывать, вставляет ли пользователь только 5 цифр.
Это является лучшим, я придумал до сих пор - я мог расширить его для автовставления тире, когда они вставляют 6-ю цифру, но проблемой с этим было бы забавное поведение на удалении (я мог мешать им удалить тире, но это будет, исправляя патч и т.д, это становится кошмаром):
$.mask.definitions['~']='[-]';
$("#myZipField").mask("?99999~9999", {placeholder:""});
Есть ли кто-либо из поля способ сделать это, или я должен прокрутить свое собственное?
Почему бы не сделать поле прозрачным, а позади него текстовый объект со светло-серой формой? Таким образом, они видят ####### - #### в фоновом режиме, а затем настраивают его так, чтобы буквы исчезали по мере ввода. В этот момент предлагается ввести тире, если они хотят поставить лишние четыре, верно? Затем вы могли бы просто настроить скрипт на автоматическую вставку дефиса, если они ошиблись, и ввести 6 цифр?
Если вы уже используете jQuery, то наверняка есть сотни плагинов, например, для масок и т.д: http://www.meiocodigo.com/projects/meiomask/
Так что я не думаю, что вам придется создавать свой собственный