zoukankan      html  css  js  c++  java
  • 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); 
  • 相关阅读:
    webservice的两种客户端调用方式(总结)
    Maven笔记
    在myeclipse中建立webservice,发布webservice并且调用webservice接口
    1分钟内使用Adobe Dreamweaver CS5建立导航菜单
    Asp.Net Cookie的清除
    常用的sql标准建表语句
    Java5的 线程并发库
    使用NPOI操作Excel
    使用.net 内置的SmtpClient来实现邮件的发送
    qlikview 地图插件制作教程
  • 原文地址:https://www.cnblogs.com/hubing/p/3976049.html
Copyright © 2011-2022 走看看