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 相关文章推荐
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
jQuery实现行文字链接提示效果的方法
Mar 10 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
Jun 30 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
Javascript实现时间倒计时效果
Jul 15 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
Oct 09 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
Apr 29 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
php实现数组按指定KEY排序的方法
2015/03/30 PHP
详解php的socket通信
2015/08/11 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
使用requests库制作Python爬虫
2018/03/25 Python
python write无法写入文件的解决方法
2019/01/23 Python
Python:slice与indices的用法
2019/11/25 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Python如何批量生成和调用变量
2020/11/21 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
小学大队委竞选口号
2015/12/25 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android
redis复制有可能碰到的问题汇总
2022/04/03 Redis
Javascript webpack动态import
2022/04/19 Javascript
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL