用于邮政编码的jquery蒙面插件

时间:2013-09-27 07:13:39

标签: javascript jquery

我有2个文本区域,我想应用蒙版。

  1. 文本区域1:由逗号和空格分隔的多个5位邮政编码
  2. 文本区域2:用逗号和空格分隔的多个3位邮政编码
  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;
            });
        });
    };
    

2 个答案:

答案 0 :(得分:1)

这是我用于屏蔽仅数字输入的代码

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

因此,更改正则表达式应该可以帮助您实现您想要的目标。 我不是正则表达式专家,但有很多在线资源!

通过向要屏蔽的输入字段添加一个“数字”类来使用它 - 显然可以将类名更改为更合适的名称!

答案 1 :(得分: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');
    });

};