在输入文本字段上只允许数字文本

我正在使用Jquery Numeric插件,但我发现它不适用于Osx上的FireFox 3.6(不允许粘贴)。

我正在搜索Jquery插件或Javascript片段,它只允许输入文本字段上的数字文本。
我有以下要求:

  1. 应该只允许数字文本
  2. 不应该允许标点符号(。,)
  3. 不应该允许虚线文本( – )
  4. 应该只允许粘贴数字文本
  5. 多浏览器

演示: http //so.devilmaycode.it/allowing-just-numeric-text-on-input-text-field/

 jQuery.fn.onlyDigits = function() { var k; // little trick just in case you want use this: $('').insertAfter(this); var $dText = $(this).next('span').hide(); // Really cross-browser key event handler function Key(e) { if (!e.which && ((e.charCode || e.charCode === 0) ? e.charCode: e.keyCode)) { e.which = e.charCode || e.keyCode; } return e.which; } return $(this).each(function() { $(this).keydown(function(e) { k = Key(e); return ( // Allow CTRL+V , backspace, tab, delete, arrows, // numbers and keypad numbers ONLY ( k == 86 && e.ctrlKey ) || (k == 86 && e.metaKey) || k == 8 || k == 9 || k == 46 || (k >= 37 && k <= 40 && k !== 32 ) || (k >= 48 && k <= 57) || (k >= 96 && k <= 105)); }).keyup(function(e) { var value = this.value.replace(/\s+/,'-'); // Check if pasted content is Number if (isNaN(value)) { // re-add stored digits if CTRL+V have non digits chars $(this).val($dText.text()); } else { // store digits only of easy access $dText.empty().append(value); } }); }); }; 

用法:

 $("#onlydigits").onlyDigits(); 

注意:

感谢Insider指出MAC的过去(cmd + v)


键事件处理程序参考:

感谢dev-null-dweller,我已经解决了这个脚本:

 jQuery('#input').bind('keyup blur',function(){ jQuery(this).val( jQuery(this).val().replace(/[^0-9]/g,'') ); } ); 

谢谢systempuntoout ..我用以下脚本修复了这个问题

 $('#input').keyup( function() { var $this = $(this); $this.val($this.val().replace(/[^\d.]/g, '')); });