(function ($) { $.fn.alphanumeric = function (p) { p = $.extend({ ichars: "!@#$%^&*()+=[]\\\';,/{}|\":<>?~`.- ", nchars: "", allow: "" }, p); return this.each ( function () { if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz"; s = p.allow.split(''); for (i = 0; i < s.length; i++) if (p.ichars.indexOf(s[i]) != -1) s[i] = "\\" + s[i]; p.allow = s.join('|'); var reg = new RegExp(p.allow, 'gi'); var ch = p.ichars + p.nchars; ch = ch.replace(reg, ''); $(this).keypress ( function (e) { if (!e.charCode) k = String.fromCharCode(e.which); else k = String.fromCharCode(e.charCode); if (ch.indexOf(k) != -1) e.preventDefault(); if (e.ctrlKey && k == 'v') e.preventDefault(); } ); $(this).bind('contextmenu', function () { return false }); } ); }; $.fn.numeric = function (p) { var az = "abcdefghijklmnopqrstuvwxyz"; az += az.toUpperCase(); p = $.extend({ nchars: az }, p); return this.each(function () { $(this).alphanumeric(p); }); }; $.fn.alpha = function (p) { var nm = "1234567890"; p = $.extend({ nchars: nm }, p); return this.each(function () { $(this).alphanumeric(p); } ); }; })(jQuery);