2013-09-27 3 views
0

У меня есть 2 текстовых области, к которым я хочу применить маскировку.jquery masked plugin для почтовых индексов

  1. Текста область 1: кратен 5-значные почтовые коды, разделенная запятой и пробел
  2. текстовой область 2: несколько 3-значные почтовые индексы, разделенных запятой и пробелом

Таким образом, в обоих случаях , допустимые символы: 0-9, запятая и пробел.

Мне нелегко придумать маскировку для этого. Могу ли я сделать что-то вроде маскированного плагина?

http://digitalbush.com/projects/masked-input-plugin/

Я последовал this придумать пользовательский плагин, чтобы определенные ключи, но попал в проблему с запятой и Ctrl + V. запятая и < оба имеют один и тот же ключевой код, поэтому теперь вы берете маршрут маскировки.

//Multiple zip codes separated by comma and space 
jQuery.fn.multipleZipCodesSeparatedByCommaAndSpaceOnly = function() { 
    return this.each(function() { 
     $(this).keydown(function (e) { 
      var key = e.which || e.keyCode; 
      //alert(String.fromCharCode(key)); 
      if (!e.altKey && e.ctrlKey && //&& !e.shiftKey && 
      // numbers 
       (key >= 48 && key <= 57) || 
      // Numeric keypad 
       (key >= 96 && key <= 105) || 
      // comma, space 
       key == 188 || key == 32 || 
      // Backspace and Tab 
       key == 8 || key == 9 || 
      // Home and End 
       key == 35 || key == 36 || 
      // left and right arrows 
       key == 37 || key == 39 || 
      // Del and Ins 
       key == 46 || key == 45) { 
       return true; 
      } 

      return false; 
     }); 
    }); 
}; 

ответ

1

Вот код, который я использую для маскировки для ввода числового только

$('.numeric').keyup(function() { 
    $(this).val($(this).val().replace(/[^0-9.]/g,'')) 
}); 

Таким образом, изменение регулярного выражения должно помочь вам достичь того, что вы хотите сделать. Я не эксперт по regex, но есть много онлайн-ресурсов!

Используйте это, добавив класс «числовой» в поле ввода, которое вы хотите замаскировать, - очевидно, измените имя класса на что-то более подходящее!

+0

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

0

Вот плагин ...

//Multiple zip codes separated by comma and space 
jQuery.fn.multipleZipCodesSeparatedByCommaAndSpaceOnly = function (method) { 

    var methods = { 
     init: function() { 
      //keyup 
      $(this).bind('input propertychange', function (e) { 
       methods.ZipCodeHandle(e, $(this)); 
      }); 
     }, 
     ZipCodeHandle: function (e, $object) { 
      $object.val($object.val().replace(/[^\d\, ]/g, '')); 
     } 
    }; 

    return this.each(function() { 
     // Method calling logic 
     if (methods[method]) 
      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
     else if (typeof method === 'object' || !method) 
      return methods.init.apply(this, arguments); 
     else 
      $.error('Method ' + method + ' does not exist'); 
    }); 

}; 
Смежные вопросы