jQuery 文本框数值输入验证v1.2

本文介绍了一个jQuery插件,用于验证文本框内的数值输入,包括整数与小数限制,支持最大值设置及求和功能。适用于IE9、Firefox和Chrome等浏览器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 jQuery 文本框数值输入验证


author:         陈日红@杭州
date:           2013-11-15
version:        v1.1  


IE9,FF,CHROME 测试通过


使用说明:
        1、文本框添加 max_vlaue 自定义属性后,可以验证输入值必须小于等于 max_value
调用方法:
        1、允许小数:$(":text").just_num({ decimal: true,digits:2,sum:true });
        2、不允许小数:$(":text").just_num();
*/


; (function ($) {
    //扩展 
    $.fn.extend({
        //插件名称 
        just_num: function (options) {                      
            //默认参数 
            var defaults = {
                decimal: false,
                digits:2,
                sum:false
            };
            //覆盖默认参数 
            var opts = $.extend(defaults, options);
            var $this = this;


            function _fn(_this){
               
                if(opts.decimal){
                    _this.value = _this.value.replace(/[^\d\.]/g, '').replace(/^\./g,'0.').replace(/\.{2,}/g,".").replace(".","$#$").replace(/\./g,"").replace("$#$",".");
                }else{
                    _this.value  = _this.value.replace(/[^\d]/g, '');
                }


                if(_this.value != '0' && _this.value != ''){


                    //防止出现 00000=====
                    if( opts.decimal && _this.value.substr(_this.value.length - 1,1) == '.'){
                        _this.value = parseFloat(_this.value, 10) + '.';
                    }
                    else{
                        _this.value = parseFloat(_this.value, 10);
                    }
                    //==============
                    var max_value = parseFloat(_this.getAttribute('max_value'), 10);
                    if(!isNaN(max_value)){
                        if (_this.value > max_value) {
                            _this.value = max_value;
                        }
                    }
                 
                    if(_this.value.indexOf('.') != -1 && (_this.value.length - _this.value.indexOf('.') - 1 ) > opts.digits ){
                        _this.value = _this.value.substr(0,_this.value.indexOf('.') + 1 + opts.digits);
                    }
                 }else{
                    _this.value = 0;
                 }
                 if(opts.sum)
                 {
                    get_sum(0);
                 }
            }


            function get_sum(sum_value){
                $this.each(function(idx, obj){                
                    var val = parseFloat(obj.value, 10);
                    if (!isNaN(val)) {
                        sum_value = sum_value * 1 + val  * 1;
                    }
                    if(idx == $this.length - 1)
                    {
                        if(opts.decimal){
                            sum_value = parseFloat(sum_value, 10).toFixed(opts.digits);
                        }


                        var obj = document.getElementById("numberic_sum");


                        if(obj){
                            if(obj.getAttribute("type") == "text"){
                                obj.value = sum_value;
                            }else{
                                obj.innerHTML = sum_value;
                            }
                        }else{
                            alert('jQuery.numberic.js:\n\n  无法保存求和结果:找不到 id =  numberic_sum 的 element ! ');
                        }
                    }
                });    
            }


            this.each(function () {
                 var t = this;
                 _fn(t);


                 $(t).bind('focus', function (evt) {
                    if (t.value == 0) {
                        t.value = '';
                    }
                });


                $(t).bind('paste',function(evt){
                    return false;
                });


                $(t).bind('blur', function (evt) {
                    if (t.value == '') 
                    { 
                        t.value = 0;
                    }
                    else{
                         if(opts.decimal){
                            t.value = parseFloat(t.value, 10).toFixed(opts.digits);
                        }
                    }
                });


                $(t).bind('keyup', function () {
                    _fn(t);
                });


            });
        }
    });
})(jQuery);



下载地址:下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值