vue数字类型过滤器的示例代码


Posted in Javascript onSeptember 07, 2017

需求 只能输入数字

输入字母和特殊字符自动过滤掉

输入完成失焦自动加.00 如果输入了小数自动四舍五入为22.22类似这样格式

效果图

vue数字类型过滤器的示例代码

可以使用在普通js和angular里面,vue 直接调用

先上调用的函数

/**
 * User: sheyude
 * Date: 2017/9/4 0004
 * Time: 上午 10:51
 *
 */
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
}

如果你是vue用户用户请继续看 vue全局注册指令

/**
 * User: sheyude
 * Date: 2017/9/4 0004
 * Time: 上午 11:00
 *
 */
import {number} from './numberDirective'


import Vue from 'vue'

Vue.directive('numbers',number)

vue 使用方式 input 里面加入v-numbers就行

<template>
  <input type="text" class="form-control" placeholder="" v-numbers v-model="valueData">
</template>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中哈希表的几种用法总结
Jan 28 Javascript
使用jQuery jqPlot插件绘制柱状图
Dec 18 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
Jul 10 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
关于vue-router路径计算问题
May 10 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
three.js中文文档学习之如何本地运行详解
Nov 20 Javascript
在Vue项目中引入腾讯验证码服务的教程
Apr 03 Javascript
详解VUE单页应用骨架屏方案
Jan 17 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
js实现自定义右键菜单
May 18 Javascript
vue监听scroll的坑的解决方法
Sep 07 #Javascript
react高阶组件经典应用之权限控制详解
Sep 07 #Javascript
React + webpack 环境配置的方法步骤
Sep 07 #Javascript
微信小程序之页面拦截器的示例代码
Sep 07 #Javascript
基于js粘贴事件paste简单解析以及遇到的坑
Sep 07 #Javascript
微信小程序实现轮播图效果
Sep 07 #Javascript
使用mint-ui开发项目的一些心得(分享)
Sep 07 #Javascript
You might like
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
python进程与线程小结实例分析
2018/11/11 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python 循环数据赋值实例
2019/12/02 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
材料会计岗位职责
2014/03/06 职场文书
洗手间标语
2014/06/23 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
安全教育日主题班会
2015/08/13 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js