格式化输入框的插件

学习之用,用到项目中,还得再优化。     我的思路是:1、init初始化2、不同的类型格式化3、不同的输出方式(内部展示,外部展示)

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    #ff{
        position: relative;
        width: 500px;
        height:500px;
        margin: 200px;
        border: 1px solid red;
    }
    .tip{
        display: none;
        position: absolute;
        top:-63px;
        left:0;
        z-index: 100;
        background-color:blue;
        padding:10px;
        height:40px;
        color:#585858;
    }
</style>
<body>
<div id="ff">
    <input  id="format" type=‘text‘>
    <div id="tip" class="tip"></div>
</div>

</body>
<script src="./js/bundle.js"></script>
</html>

  js:

index.js:

import {InputFormat} from ‘./inputFormat.js‘;

let format = new InputFormat();

format.init(‘format‘,‘bank‘,‘out‘,‘tip‘)

inputFormat.js:

/**
 * Created by chen on 2016/9/7.
 */
/**
 * id:inout的id
 * type:bank(银行)和finance(金融)
 * location:inner内部 其实外部
 * outid:外部展示的id
 */
class InputFormat{
    constructor(){
        this._type = ‘‘;
    };
    init(id, type =  ‘bank‘, location = ‘inner‘, outid) {
        if(!id){return};
        let eleid = document.getElementById(id);
        let setdata;
        this.addLiter(eleid, ‘change‘,() => {
            let text = eleid.value;
            //报存便于计算

            eleid.setAttribute(‘data-num‘,text.trim())
            switch (type){
                case ‘bank‘:{
                     setdata = this.formatFi(text)
                }
                    break;
                case ‘finance‘:{
                    setdata = this.formatBa(text)
                }
                    break;

            }
            this.setdata(eleid, setdata, location, outid)
        })
        return this;
    }
    addLiter(_e, event ,callback){
        if(typeof document.addEventListener !== undefined){
            _e.addEventListener(event,callback);
        } else{
            _e.attachEvent(‘on‘+enent, callback);
        }
    }
    formatFi(text){
        let t = text.trim();
        if(t.length > 22){
               t =  t.slice(0, 22);
        }
        var temp = t.replace(/\D/g, ‘‘).replace(/(....)(?=.)/g, ‘$1 ‘);
        return temp;
    }
    formatBa(s){
        if(/.+(\..*\.|\-).*/.test(s)){
            return;
        }
        s = parseFloat((s + "").replace(/[^\d\.\-]/g, "")).toFixed(2) + "";
        let l = s.split(".")[0].split("").reverse(),
            r = s.split(".")[1];
        let t = "";
        for(let i = 0, len = l.length; i < len; i ++ ) {
            t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length && (l[i+1]!=‘-‘)? "," : "");
        }
        let temp = t.split("").reverse().join("") + "." + r;
        return temp;

    }
    setdata(e, text, location, outid){
        if (location === ‘inner‘){
            e.value = text;
        }else{
            let d =document.getElementById(outid);
            d.innerHTML = text;

            if(!!outid){
                if(!e.value){
                    d.style.display = ‘none‘;
                }else {
                    d.style.display = ‘block‘;
                }
            }

        }

    }

}

export {InputFormat};
时间: 2024-08-08 12:59:18

格式化输入框的插件的相关文章

Dreamweaver CS5 CS6 代码格式化、美化插件(可同一时候格式化HTML、JavaScript、CSS )眼下最好用的代码格式化扩展

Dreamweaver CS5 CS6 代码格式化.美化插件(可同一时候格式化HTML.JavaScript.CSS )眼下最好用的代码格式化扩展. 众所周知,Dreamweaver CS5 CS6 自带的"应用源格式"仅仅能单独格式化HTML文件和CSS文件,不能格式化JavaScript文件.更不能同一时候格式化内嵌在HTML代码里的javascript代码,此插件就是为了替代自带的代码格式化工具而出现的. 该插件能单独格式化css文件.javascript文件.html文件,也能

Dreamweaver CS5 CS6 代码格式化、美化插件(可同时格式化HTML、JavaScript、CSS )目前最好用的代码格式化扩展

Dreamweaver CS5 CS6 代码格式化.美化插件(可同时格式化HTML.JavaScript.CSS )目前最好用的代码格式化扩展. 众所周知,Dreamweaver CS5 CS6 自带的"应用源格式"只能单独格式化HTML文件和CSS文件,不能格式化JavaScript文件,更不能同时格式化内嵌在HTML代码里的javascript代码,此插件就是为了替代自带的代码格式化工具而出现的. 该插件能单独格式化css文件.javascript文件.html文件,也能在格式化h

sublime格式化css代码插件:css format

有时会从网上下载一些css压缩文件,打开后所有代码都在一行,不利于阅读,通过css format插件,能快速展开代码,方便阅读. 参考:Sublime Text 上最好用的 CSS 格式化插件 —— CSS Format css format 下载:https://github.com/mutian/Sublime-CSS-Format, 下载后解压到sublime Packages目录下,菜单栏preference-->Brower Packages 安装css format插件后,选择代码,

vs code编辑器格式化react jsx插件

vs code格式化jsx比较适合的插件是react-beautify: 格式化中遇到的问题是indent几格,这个问题的解决是你在space里设置几格这个插件就会自动格式化出几格.

格式化货币jQuery插件

很多时候我们需要去格式化货币在页面的显示效果,比如我们需要在前面加上$, ¥,或者是我们想让千分位加一个,号隔开以便于我们更好的阅读.甚至我们希望我们在输入框里也能够展示出格式化的货币,同时在输入或者删除的时候也能支持格式化. jQuery-FomratMoney,能够根据你的配置完成你想要的货币格式化.支持纯文本格式化.文本框格式化和文本框输入格式化. 下载:jQuery-FormatMoney

sublime 安装格式化css代码插件:css format

1.先下载css format ,下载地址:https://github.com/mutian/Sublime-CSS-Format, 2.下载后解压到sublime Packages目录下,菜单栏preference-->Brower Packages 3.安装css format插件后,选择代码,菜单栏Edit-->css Format-->Expanded,展开代码.此时插件安装完成 原文地址:https://www.cnblogs.com/cui-cui/p/11429116.h

nodepad++ 格式化xml插件

1.用插件管理器安装xmltools插件 2.使用如下菜单格式化xml: 所有插件下载地址: http://sourceforge.net/projects/npp-plugins/files/ nodepad++ 格式化xml插件

log4e插件安装和使用

1.首先下载log4e插件,放入myeclipse10的安装目录D:\Program Files (x86)\myEclipse10\MyEclipse Blue Edition 10\dropins下,新建文件夹log4e,将下载的log4e的插件放入,新建log4e.link文件,写入path=D:/Program Files (x86)/myEclipse10/MyEclipse Blue Edition 10/dropins/log4e内容. 2.重新启动myeclipse10,在页面内

改造jQuery-Tagit 插件支持中文全角的逗号和空格

jQuery 的 tagit 插件效果还是不错的,今天用到该插件但发现不能自定义标签分隔符,只能是英文半角逗号或空格,于是想改造下 效果: 先研究了一番插件的代码,发现并不能通过插件自身的扩展方法来实现, 标签输入框是插件自己生成的,所以本来想在外部绑定 keydown 事件但由于事件绑定先后顺序的问题不能实现,只能修改代码了: 改动不多,主要是增加了三个事件绑定在插件原来的 keydown 事件之前绑定一个自定义的 keydown 以及 blur 事件处理标签内容的过滤,以及 keyup 后模