Fork me on GitHub

只能输入数字装X版

jquery.onlyNum.js:

复制代码
(function ($) {
    $.fn.numeric = function (only_integer, precision) {
        var decimal = only_integer === false ? "." : "";
        var reg = new RegExp("[^0-9" + decimal + "]", "g");
        var precision = precision || 2;
        this.css("ime-mode", "disabled");
        this.keyup(function (e) {
            var key = e.which;
            if (key != 8 && key != 9 && key != 13 && key != 16 && key != 35 && key != 36 && key != 37 && key != 39 && key != 46) {
                var position = $(this).cursorPosition();
                var old_len = $(this).val().length;
                $(this).val($(this).val().replace(reg, ""));
                $(this).cursorPosition(position - (old_len - $(this).val().length))
            }
        });
        this.keydown(function(e) {
            var key = e.which;
            if (only_integer === false && key === 190) {
                if (this.value.indexOf(".") > -1) {
                    return false
                }
            }
        });
        this.blur(function () {
            if ($(this).hasClass("placeholder")) {
                return
            }
            if ($(this).val().length > 1) {
                var tmp = parseFloat($(this).val());
                tmp = isNaN(tmp) ? "" : tmp + "";
                if (only_integer === false) {
                    var index = tmp.indexOf(".");
                    if (index > -1) {
                        tmp = tmp.substring(0, index + precision + 1)
                    }
                }
                $(this).val(tmp)
            }
        });
        this.bind("dragover", function (e) {
            e.originalEvent.dataTransfer.dropEffect = "none";
            e.preventDefault();
            return false
        });
        return this
    };
    $.fn.cursorPosition = function (value) {
        var elem = this[0];
        if (elem && (elem.tagName == "TEXTAREA" || elem.type.toLowerCase() == "text")) {
            if (window.attachEvent) {
                var rng;
                if (elem.tagName == "TEXTAREA") {
                    rng = event.srcElement.createTextRange();
                    rng.moveToPoint(event.x, event.y)
                } else {
                    rng = document.selection.createRange()
                }
                if (value === undefined) {
                    rng.moveStart("character", -event.srcElement.value.length);
                    return rng.text.length
                } else {
                    if (typeof value === "number") {
                        var index = this.cursorPosition();
                        index > value ? (rng.moveEnd("character", value - index)) : (rng.moveStart("character", value - index));
                        rng.select()
                    }
                }
            } else {
                if (value === undefined) {
                    return elem.selectionStart
                } else {
                    if (typeof value === "number") {
                        elem.selectionEnd = value;
                        elem.selectionStart = value
                    }
                }
            }
        }
    }
})(jQuery);
复制代码
posted @   花儿笑弯了腰  阅读(161)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示