This jQuery plugin filters keyboard input by specified regular expression.
Source code inspired by Ext.JS (Ext.form.TextField, Ext.EventManager), but was modified to provide more accurate logic.
$("#ggg").keyfilter(/[\dA-F]/);
Also you can pass test function instead of regexp. Its arguments:
- this - HTML DOM Element (event target).
- c - String that contains incoming character.
$("#ggg").keyfilter(function(c) { return c != 'a'; });
<input type="text" class="mask-num" />
Inputs with CSS classes like this will automatically have the corresponding regexp below applied.
- mask-pint:
/[\d]/
- mask-int:
/[\d\-]/
- mask-pnum:
/[\d\.]/
- mask-num:
/[\d\-\.]/
- mask-hex:
/[0-9a-f]/i
- mask-email:
/[a-z0-9_\.\-@]/i
- mask-alpha:
/[a-z_]/i
- mask-alphanum:
/[a-z0-9_]/i
You can apply these standard regexps to different classes if you wish.
$("input.integer").keyfilter($.fn.keyfilter.defaults.masks.int)
Keyfilter supports extending and changing of list of provided masks.
/*
* Key filter masks for hosting.
*/
(function($)
{
var hostingMasks = {
dir: /[a-z0-9_\/\-\.]/i,
ftpuser: /[a-z0-9_]/
};
$.extend($.fn.keyfilter.defaults.masks, hostingMasks);
})(jQuery);
/*
* Key filter masks supporting french accents.
*/
(function($)
{
$.extend($.fn.keyfilter.defaults.masks, {
alpha: /[a-zéèçàêoe_]/i,
alphanum: /[a-zéèçàêoe0-9_]/i
});
})(jQuery);
You can fully override masks by simple assignment after the plugin loads but before the document.ready
event fires.
$.fn.keyfilter.defaults.masks = { ... };