自己定义的验证框架

自己没事弄的一个验证框架。也不复杂,仅仅是为了试验自己心中的一点想法。。

可以研究一下,还是挺有意思的。

/*
        input文本框的验证方法
        obj:要验证的input控件id或者class(jquery写法)
        options:传入的参数
    */
   
    var AKvaluedat = function (obj, options) {
        var defaults = {
            "rule": "number" //检测类型
            , "min": 1 //最小值
            , "max": 1000 //最大值
            , "null": true //是否空
            , "null": { "def": 1 } //是否空
            , "large": "#ceshi2" //大于
            , "small": "#ceshi3" //小于
            , "err": "" //错误信息容器
            , "errShow": true //是否显示错误信息
            , "minlength": 5 //文本长度
            , "maxlength": 10 //文本长度
            , "sync": "#ceshi3" //与另一个比较
            , "func": null //验证完成之后执行的方法
        }
        //test
        //var options = defaults;
        var obj = $(obj);
        if (!obj || typeof (obj) != "object") return;
        var quens = [];
        //初始解除事件绑定
        obj.unbind("keyup blur keypress");
        //追加错误信息显示
        var err = null;
        if (options.err) {
            err = $(options.err);
        }
        else {
            if (obj.next("span").length == 0) {
                err = $("<span style='color:#bb0000' class='msg'>");
                err.insertAfter(obj);
            }
            else {
                err = obj.next();
            }
        }
        if (!options.errShow) {
            err = $("<span>");
        }
        //检测类型
        if (options.rule) {
            switch (options.rule) {
                case "number":
                    quens.push(isNumber);
                    obj.bind("keypress", function (e) {
                        if (e.which < 48 || e.which > 59) {
                            return false;
                        }
                    });
                    break;
                case "decimal":
                    quens.push(isDecimal);
                    obj.bind("keypress", function (e) {
                        if (e.which != 46) {
                            if (e.which < 48 || e.which > 59) {
                                return false;
                            }
                        }
                    });
                    break;
            }
        }
        //检测整数数字
        function isNumber() {
            if (!obj.val().isNumber())
            {
                if (options.null && options.null.def) {
                    obj.val(options.null.def);
                }
                err.text("请输入数字");
                bl = false;
            }
        }
        //检测小数
        function isDecimal() {
            if (!obj.val().isDecimal()) {
                if (options.null && options.null.def) {
                    obj.val(options.null.def);
                }
                err.text("请输入数字");
                bl = false;
            }
        }
        //检测最小值
        function isMin() {
            if (parseInt(obj.val()) < options.min) {
                err.text("请输入大于等于" + options.min + "的值。");
                    bl = false;
                }
           
        }
        //检测最大值
        function isMax() {
            if (parseInt(obj.val()) > options.max) {
                err.text("请输入小于等于" + options.max + "的值。");
                bl = false;
            }
        }
        //检测空值
        function isNNull () {
            if (obj.val().isNull()) {
                if (options.null.def) {
                    obj.val(options.null.def);
                    bl = false;
                }
                else {
                    err.text("请不要填写空值");
                    bl = false;
                }
            }
        }
        //检测大于
        function isLarge () {
            if (parseInt(obj.val()) < parseInt($(options.large).val())) {
                err.text("请不要小于之前的数值");
                bl = false;
            }
        }
        //检测小于
        function isSmall () {
            if (parseInt(obj.val()) > parseInt($(options.small).val())) {
                err.text("请不要大于之后的数值");
                bl = false;
            }
        }
        //检测长度
        function isMinLength () {
            if (!obj.val().min(options.minlength)) {
                err.text("请填入长度不小于" + options.minlength + "的文本");
                bl = false;
            }
        }
        function isMaxLength () {
            if (!obj.val().max(options.maxlength)) {
                err.text("请填入长度不大于" + options.maxlength + "的文本");
                bl = false;
            }
        }
        //检测是否一样
        function isSync () {
            if (obj.val() != $(options.sync).val()) {
                err.text("两次输入的不一样");
                bl = false;
            }
        }
        //讲方法加入队列
        if (options.min) quens.push(isMin);
        if (options.max) quens.push(isMax);
        if (options.null) quens.push(isNNull);
        if (options.large) quens.push(isLarge);
        if (options.small) quens.push(isSmall);
        if (options.minlength) quens.push(isMinLength);
        if (options.maxlength) quens.push(isMaxLength);
        if (options.sync) quens.push(isSync);
        if (options.func) quens.push(options.func);
        //讲队列绑定
        obj.bind("keyup blur", function () {
            var bl = true;
            //obj.next().text("");
            err.text("");
            for (var i in quens) {
                if (bl) quens[i]();
            }
        });
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂紫萧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值