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

标签 javascript jquery

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

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

  1. 应该只允许数字文本
  2. 不应使用标点符号 (.,)
  3. 不应允许虚线文本 (-)
  4. 应该只允许粘贴数字文本
  5. 多浏览器
  6. 多平台

最佳答案

演示: 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:
    $('<span></span>').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();

注意:

thanks to Insider for pointing out the past (cmd+v) for MAC


按键事件处理程序REFERENCES:

关于javascript - 在输入文本字段上只允许数字文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903806/

相关文章:

javascript - 如何匹配我创建的列表中的国家/地区,然后在该国家/地区在列表内时采取行动? (GeoIP 重定向)

javascript - 如何将 2 个带有对象的数组重组为嵌套数组?

javascript - ImageFlow + HighSlide dimmingOpacity 选项

javascript - 如何只重新加载一行

javascript - 面对鼠标事件的问题

javascript - 如何使用 Node.js javascript 创建 jwt

javascript - 没有服务器交互的javascript中的交叉表变量

javascript - Rails 操作以状态 200 运行,但未访问模板且未触发 jQuery

javascript - 简单 jQuery 上的 IE 错误

javascript - 向弹出窗口添加 24 小时 cookie 使其根本不显示?