JQuery Zip маскирование для нескольких форматов - PullRequest
11 голосов
/ 24 июня 2010

У меня есть требования для маскировки поля почтового индекса, чтобы он допускал классический 5-значный формат zip (XXXXX) или 5 + 4 (XXXXX-XXXX).

Я мог бы что-то вроде:

$('#myZipField').mask("?99999-9999");

но сложность заключается в том, что черта не должна отображаться, если пользователь вводит только 5 цифр.

Это лучшее, что я придумал до сих пор - я мог бы расширить его для автоматической вставки тире, когда они вставляют 6-ю цифру, но проблема с этим была бы странным поведением при удалении (я мог помешать им удалить дефис но это будет исправление патча и так далее, это станет кошмаром):

$.mask.definitions['~']='[-]';
$("#myZipField").mask("?99999~9999", {placeholder:""});

Есть ли какой-нибудь из готовых способов сделать это, или я должен свернуть свой собственный?

Ответы [ 4 ]

10 голосов
/ 10 ноября 2012

Вам не нужно использовать другой плагин.Просто переместите знак вопроса, чтобы вместо:

$('#myZipField').mask("?99999-9999");

вы должны использовать:

$('#myZipField').mask("99999?-9999");

В конце концов, необязательна не вся строка, а - и далее.

1 голос
/ 20 июня 2016

Этот почтовый индекс на самом деле прост, но когда у вас есть более сложный формат для обработки, вот как он решается с помощью плагина (со демонстрационной страницы ):

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);
1 голос
/ 28 июня 2010

Если вы уже используете jQuery, возможно, существуют сотни плагинов для масок и т. Д., Например: http://www.meiocodigo.com/projects/meiomask/

Так что я не думаю, что вам придется бросать свои собственные

0 голосов
/ 28 июня 2010

Почему бы не сделать поле прозрачным, а позади него текстовый объект со светло-серой формой?Таким образом, они видят ####### - #### на заднем плане, а затем настраивают его так, чтобы буквы исчезали при вводе.В этот момент он предлагает ввести тире, если они хотят поставить дополнительные четыре, верно?Затем вы можете просто настроить скрипт на автоматическую вставку дефиса, если он испортится, и набрать 6 цифр?

...