(function($){ $.fn.alphanumeric = function(p) { p = $.extend({ ichars: "!@#$%^&*()+=[]\\\';,/{}|\":<>?~`.- ", nchars: "", allow: "", contextmenu: false }, 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() { if( !p.contextmenu ) 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);