zoukankan      html  css  js  c++  java
  • Vue封装常用指令Directive

    需求 只能输入数字
    输入字母和特殊字符自动过滤掉
    输入完成失焦自动加.00 如果输入了小数自动四舍五入为22.22类似这样格式

    let number = {
        twoWay: true,
            bind:function (el) {
        el.addEventListener('blur',function () {
            // let value = formatNumber(el.value,2,0)
            let value
    
            (function(){
                value = formatNumber(el.value,2,0)
                return value
            })()
            el.value =value
        })
    },
        update:function (el,binding,vnode) {
            if(el.value !== ''){
                el.value = el.value.replace(/[^0-9.]+/g, '');
            }
        }
    }
    
    /**
     * 将数值四舍五入后格式化.
     * @param num 数值(Number或者String)
     * @param cent 要保留的小数位(Number)
     * @param isThousand 是否需要千分位 0:不需要,1:需要(数值类型);
     * @return 格式的字符串,如'1,234,567.45'
     * @type String
     */
    
    function formatNumber(num,cent,isThousand) {
        num = num.toString().replace(/$|\,/g,'');
    
        // 检查传入数值为数值类型
        if(isNaN(num))
            num = "0";
    
        // 获取符号(正/负数)
        let sign = (num == (num = Math.abs(num)));
    
        num = Math.floor(num*Math.pow(10,cent)+0.50000000001);  // 把指定的小数位先转换成整数.多余的小数位四舍五入
        let cents = num%Math.pow(10,cent);              // 求出小数位数值
        num = Math.floor(num/Math.pow(10,cent)).toString();   // 求出整数位数值
        cents = cents.toString();               // 把小数位转换成字符串,以便求小数位长度
    
        // 补足小数位到指定的位数
        while(cents.length<cent)
            cents = "0" + cents;
    
        if(isThousand) {
            // 对整数部分进行千分位格式化.
            for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
                num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
        }
    
        if (cent > 0)
            return (((sign)?'':'-') + num + '.' + cents);
        else
            return (((sign)?'':'-') + num);
    }
    export {
        number
    }
    

    用法

    import {number} from './numberDirective'
    
    import Vue from 'vue'
    
    Vue.directive('numbers',number)
    

      

  • 相关阅读:
    UOJ.26.[IOI2014]Game(交互 思路)
    Good Bye 2016 F.New Year and Finding Roots(交互)
    Codeforces.835E.The penguin's game(交互 按位统计 二分)
    Codeforces.744B.Hongcow's Game(交互 按位统计)
    Codeforces.862D.Mahmoud and Ehab and the binary string(交互 二分)
    正睿OI 提高 Day1T3 ZYB玩字符串(DP)
    划分vlan
    2三层交换机实现vlan间的路由
    交换机基础-交换机远程telnet
    自动化运维环境的搭建问题处理
  • 原文地址:https://www.cnblogs.com/Abner5/p/7568807.html
Copyright © 2011-2022 走看看