基于jquery扩展文本——之精度文本控件(数字,精度文本)

在我做项目过程中常常会遇到文本控件值只存在数字类型或浮点类型,比如数量,价格。常常我都需要为这值做验证,以及增加用户智能体验,能自动识别等等。从细节做起,让用户体验不一样的方便与智能。代码如下:

1。自定义函数

//控件扩展——精度控件
var Sh_decimal = function (input) {
    var _this = this, _obj, _type, _default, _fun;
    //构造函数
    this.fun_init = function () {
        if (input.obj == undefined) return;
        _obj = input.obj;
        _type = input.type ? input.type : 'int';
        _default = input.def_txt ? input.def_txt : '0';
        _fun = input.fun ? input.fun : function () { };
        _this.fun_click();
    }
    //定义函数事件
    this.fun_click = function () {
        //获取焦点事件
        _obj.focus(function () {
            if ($(this).val() == _default) {
                $(this).val('');
            }
        });
        //失去焦点事件
        _obj.blur(function () {
            var v = $(this).val();
            var _min = $(this).attr('_min');
            switch (_type) {
                case 'int':
                    {
                        if (v.isNumber()) {
                            //判断是否有最小值
                            if (_min && parseInt(v) < parseInt(_min)) {
                                $(this).val(_min);
                                if (_fun && typeof (_fun) == 'function') _fun($(this));
                                return;
                            }
                        } else
                            $(this).val(_default);
                    }; break;
                case 'decimal':
                    {
                        if (v.isDecimal()) {
                            //判断是否有最小值
                            if (parseFloat(v) < parseFloat(_min)) {
                                $(this).val(_min);
                                if (_fun && typeof (_fun) == 'function') _fun($(this));
                                return;
                            }
                            //矫正精度
                            var index = v.indexOf('.');
                            if (index == -1) {
                                $(this).val(v + '.00');
                            } else {
                                var l = v.length - index - 1;
                                for (; l < 2; l++) {
                                    v += '0';
                                }
                                $(this).val(v);
                            }
                        } else
                            $(this).val(_default);
                    }; break;
            }
        });
    }
    //实例化
    _this.fun_init();
}

2。实例调用

 new Sh_decimal({ obj: $('.txt_pay'), type: 'decimal', def_txt: '0.00' }); //金额
    new Sh_decimal({ obj: $('.ps_amount'), type: 'int', def_txt: 1 }); //库存量

从调用来看非常方便,只要实例化该类就能为文本控件实现独特的类型。

以下为示例教程:

Sh_decimal(input)

Contents

obj

输入框对象

_type

类型(int(整型)/decimal)

_default

默认值

html代码

<head>

<title></title>

<link href="/_css/manage.css" rel="stylesheet" type="text/css" />

    <script src="/_js/jquery-1.8.2.min.js" type="text/javascript"></script>

    <script src="/_js/Valid.js" type="text/javascript"></script>

    <script src="/_js/Sh_property.js" type="text/javascript"></script>

    <script src="download.js" type="text/javascript"></script>

</head>

<body>

    <font>金额:</font><input class="txt or_pay" type="text" maxlength="10" value="0.00" />

</body>

fun_blur()

失去焦点事件

示例:

new Sh_decimal({
   obj: $('.or_pay'),
   type: 'decimal',
   def_txt: '0.00',
   fun_blur: function () {
      alert("失去焦点事件");
   }
});

展示效果:


下载地址:

js精度控件

http://www.tiaoceng.com/assemblydetail_32.html

新浪微博(求关注)地址:

http://weibo.com/zhengdjin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery是一种流行的JavaScript库,它可以简化编写JavaScript代码的过程。在这里,我将向你介绍如何使用jQuery创建一个简单的日历插件。 首先,我们需要在HTML文件中引入jQuery库和我们自己的脚本文件: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="calendar.js"></script> ``` 接下来,我们需要在HTML文件中创建一个空的`<div>`元素,用于容纳我们的日历: ```html <div id="calendar"></div> ``` 现在,我们已经准备好开始编写JavaScript代码了。在我们的脚本文件中,我们将定义一个名为`Calendar`的对象,该对象将具有以下属性和方法: ```javascript var Calendar = { // 初始化日历 init: function(selector) { // ... }, // 绘制日历 draw: function(year, month) { // ... }, // 获取指定月份的天数 getDaysInMonth: function(year, month) { // ... }, // 获取指定月份的第一天是星期几 getFirstDayOfWeek: function(year, month) { // ... } }; ``` 现在,我们来看看这个对象的实现细节。首先是初始化方法: ```javascript init: function(selector) { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; $(selector).data('year', year); $(selector).data('month', month); this.draw(year, month); } ``` 在这里,我们获取当前的年份和月份,然后将它们存储在`<div>`元素的数据属性中。然后,我们调用`draw`方法来绘制日历。 接下来是绘制方法: ```javascript draw: function(year, month) { var daysInMonth = this.getDaysInMonth(year, month); var firstDayOfWeek = this.getFirstDayOfWeek(year, month); var html = '<table>'; html += '<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>'; var day = 1; for (var i = 0; i < 6; i++) { html += '<tr>'; for (var j = 0; j < 7; j++) { if (i === 0 && j < firstDayOfWeek) { html += '<td></td>'; } else if (day > daysInMonth) { html += '<td></td>'; } else { html += '<td>' + day + '</td>'; day++; } } html += '</tr>'; if (day > daysInMonth) { break; } } html += '</table>'; var selector = '#calendar'; $(selector).html(html); } ``` 在这里,我们首先获取指定月份的天数和该月份的第一天是星期几。然后,我们使用一个表格来绘制日历。我们遍历6行和7列,并根据当前日期填充单元格。如果日期超出了该月份的天数,我们就停止绘制。 最后,我们将HTML代码插入到`<div>`元素中。 最后是获取指定月份的天数和第一天是星期几的方法: ```javascript getDaysInMonth: function(year, month) { return new Date(year, month, 0).getDate(); }, getFirstDayOfWeek: function(year, month) { return new Date(year, month - 1, 1).getDay(); } ``` 这些方法分别使用JavaScript的`Date`对象来计算指定月份的天数和第一天是星期几。 现在,我们已经完成了一个简单的日历插件的开发。你可以在HTML文件中使用以下代码来初始化日历: ```javascript $(document).ready(function() { Calendar.init('#calendar'); }); ``` 当然,你还可以根据自己的需要对插件进行扩展和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值