Jquery 输入金额格式限制 插件

(function($) {
    $.fn.extend({
        money_mode: function(options) {
            var defaults = {
                decimal_length: 2,//小数点位数
                format: "#,###.00",//格式化类型
                locale: "us"
            };
            var options = $.extend(defaults, options);
            var len = parseInt(options[‘decimal_length‘]);
            return this.each(function() {
                var input = $(this);
                input.css("ime-mode", "disabled");
                var decimal_point = false;
                input.bind("keypress", function() {
                    if (event.keyCode == 46) {
                        if (input.val().indexOf(".") != -1 || (input.val().lastIndexOf(".") == (input.val().length - 1))) {
                            return false;
                        }
                    } else {
                        if (decimal_point)
                            return false;
                        else
                            return event.keyCode >= 46 && event.keyCode <= 57;
                    }
                });
                input.bind("blur", function() {
    // begin失去焦点后字符串格式化
                var formatData = formatCodes(options.locale.toLowerCase());
            var valid = formatData.valid;
            var dec = formatData.dec;
            var group = formatData.group;
            var neg = formatData.neg;
                    if (input.val() != null && input.val() != ‘‘) {
                        var text = new String(jQuery(input).text());
                        if (jQuery(input).is(":input"))
                            text = new String(jQuery(input).val());
                        var isValid = true;
                        for (var i = 0; i < text.length; i++) {
                            if (valid.indexOf(text.charAt(i)) == -1)
                                isValid = false;
                        }
                        if (isValid) {
                            var number = new Number(text.replace(group, ‘‘).replace(dec, ".").replace(neg, "-"));
                            var returnString = "";
                            var decimalValue = number % 1;
                            if (options.format.indexOf(".") > -1) {
                                var decimalPortion = dec;
                                var decimalFormat = options.format.substring(options.format.lastIndexOf(".") + 1);
                                var decimalString = new String(decimalValue.toFixed(decimalFormat.length));
                                decimalString = decimalString.substring(decimalString.lastIndexOf(".") + 1);
                                for (var i = 0; i < decimalFormat.length; i++) {
                                    if (decimalFormat.charAt(i) == ‘#‘ && decimalString.charAt(i) != ‘0‘) {
                                        decimalPortion += decimalString.charAt(i);
                                        break;
                                    }
                                    else if (decimalFormat.charAt(i) == "0") {
                                        decimalPortion += decimalString.charAt(i);
                                    }
                                }
                                returnString += decimalPortion
                            }
                            else
                                number = Math.round(number);
                            var ones = Math.floor(number);
                            var onePortion = "";
                            if (ones == 0) {
                                onePortion = "0";
                            }
                            else {
                                // find how many digits are in the group
                                var onesFormat = "";
                                if (options.format.indexOf(".") == -1)
                                    onesFormat = options.format;
                                else
                                    onesFormat = options.format.substring(0, options.format.indexOf("."));
                                var oneText = new String(ones);
                                var groupLength = 9999;
                                if (onesFormat.lastIndexOf(",") != -1)
                                    groupLength = onesFormat.length - onesFormat.lastIndexOf(",") - 1;
                                var groupCount = 0;
                                for (var i = oneText.length - 1; i > -1; i--) {
                                    onePortion = oneText.charAt(i) + onePortion;
                                    groupCount++;
                                    if (groupCount == groupLength && i != 0) {
                                        onePortion = group + onePortion;
                                        groupCount = 0;
                                    }
                                }
                            }
                            returnString = onePortion + returnString;
                            if (number < 0)
                                returnString += neg;
                            if (jQuery(this).is(":input"))
                                jQuery(this).val(returnString);
                            else
                                jQuery(this).text(returnString);
                        }
                    }
     // end 失去焦点后字符串格式化
                })
                input.bind("paste", function() {
                    var s = clipboardData.getData(‘text‘);
                    if (!//D/.test(s));
                    value = s.replace(/^0*/, ‘‘);
                    return false;
                })
                input.bind("dragenter", function() {
                    return false;
                })
                input.bind("keyup", function() {
                    if (input.val() != null && input.val() != ‘‘) {
                        if (input.val().indexOf(".") == -1) {
                            return true;
                        }
                        else {
                            var decimalIndex = input.val().indexOf(‘.‘);
                            var decimalPart = input.val().substring(decimalIndex + 1, input.val().length);
                            if (decimalPart.length == len) {
                                decimal_point = true;
                                return false;
                            }
                            else
                                return true;
                        }
                    }
                    else {
                        decimal_point = false;
                        return false;
                    }

                });
            });
        }
    });
    function formatCodes(locale) {
        // default values
        var valid = "1234567890.,-";
        var dec = ".";
        var group = ",";
        var neg = "-";
        if (locale == "us" || locale == "cn" || locale == "tw") {
            valid = "1234567890.,-";
            dec = ".";
            group = ",";
        }
        return new FormatData(valid, dec, group, neg);
    };
    function FormatData(valid, dec, group, neg) {
        this.valid = valid;
        this.dec = dec;
        this.group = group;
        this.neg = neg;
    };
})(jQuery); 
时间: 2024-10-09 10:51:59

Jquery 输入金额格式限制 插件的相关文章

jQuery Json数据格式排版高亮插件json-viewer.js的使用

1.插件介绍: jquery.json-viewer.js是一款查看json格式数据的jquery插件.它可以将混乱的json数据漂亮的方式展示在页面中,并支持节点的伸展和收缩和语法高亮等功能. 2.代码演示: 1).首先引入jquery和json.viewer.js插件 <script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script> <script src="js/jque

第一百八十六节,jQuery,验证表单插件,Ajax 表单插件,验证和提交表单

jQuery,验证表单插件,Ajax 表单插件,验证和提交表单 HTML <form id="reg" method="post" action="yzh.php" title="会员注册"> <ol class="reg_error"></ol> <p> <label for="user">帐号:</label>

jquery validation表单验证插件。

这个是刚学的,觉得对以后挺有用的,就想把自己所学的分享一下. 校验规则: (1)required:true 必输字段 (2)number:true 必须输入合法的数字(负数,小数) (3)digits:true 必须输入整数 (4)url:true 必须输入正确格式的网址 (5)email:true 必须输入正确格式的电子邮件 (6)creditcard:true 必须输入合法的信用卡号 (7)equalTo:"#password" 输入值必须和#password相同 (8)maxle

Python之路【第十三篇续】jQuery案例-Form表单&amp;插件及扩展

jQuery案例-Form表单 学完这个form表单的案例,如果有人说这个表单(功能)还不够NB(此文不包含样式,样式是CSS比较简单可以根据需求自己添加),那么找武Sir他帮你搞定. 一步一步来 注意事项(目录结构): 在写前端html代码的时候要注意(任何代码都一样),一定要规划好目录结构方便其他的人来看你的代码! 如果还有其他的html页面可以在加一个html存储的文件夹. 1.首先看下HTML主体 <!DOCTYPE html> <html lang="en"

jquery表单验证使用插件formValidator

jquery表单验证使用插件formValidator,可供有需求的朋友参考 1.首先在项目中添加必备js与css  2.代码中添加引用(必备引用) 复制代码 代码如下: <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <!--jquery必须库--> <script src="formValidator1/for

jQuery应用一之验证插件validate的使用

综述 validate是一个用来验证表单提交的插件,应用十分广泛,具有如下的几个功能 自带了基本的验证规则 提供了丰富的验证信息提示功能 多种事件触发验证 自定义验证规则 下面我们就来感受一下这个插件的强大之处吧 插件下载 在这里我们需要用到的插件文件有 jquery.validate.js jquery.validate.messages_cn.js jquery.min.js 一个是表单验证的主文件,另一个是设置中文提示的文件. 实例引入 我们先用一个小例子来感受一下使用 validate

Python之路【第十三篇】jQuery案例-Form表单&amp;插件及扩展

学完这个form表单的案例,如果有人说这个表单(功能)还不够NB(此文不包含样式,样式是CSS比较简单可以根据需求自己添加),那么找武Sir他帮你搞定. 一步一步来 注意事项(目录结构): 在写前端html代码的时候要注意(任何代码都一样),一定要规划好目录结构方便其他的人来看你的代码! 如果还有其他的html页面可以在加一个html存储的文件夹. 1.首先看下HTML主体 <!DOCTYPE html> <html lang="en"> <head>

输入金额,SpannableStringBuilder,Dialog无主题和透明背景的使用

转载请注明出处:http://blog.csdn.net/forwardyzk/article/details/43308573 整理了开发汇中遇到的一些小细节. 1.在EditText中输入金额,只能输入正确的金额格式,例如:0.01,0.1,0,123,123.0,123.01 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too

推荐20款基于 jQuery &amp; CSS 的文本效果插件

jQuery 和 CSS 可以说是设计和开发行业的一次革命.这一切如此简单,快捷的一站式服务.jQuery 允许你在你的网页中添加一些真正令人惊叹的东西而不用付出很大的努力,要感谢那些优秀的 jQuery 插件. 所以今天我们将展示一些很酷的文本效果插件,将帮助你为你的 Web 页面创建一些很酷的和动态的东西.这里是20个基于 jQuery & CSS 的文本效果插件. 您可能感兴趣的相关文章 12款经典的白富美型 jQuery 图片轮播插件 让网站动起来!12款优秀的 jQuery 动画插件