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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
不错的JS中变量相关的细节分析
Aug 13 Javascript
jquery tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
Feb 27 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
实例详解jQuery结合GridView控件的使用方法
Jan 04 Javascript
json与jsonp知识小结(推荐)
Aug 16 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
Angular异步变同步处理方法
Aug 13 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
Mar 14 Javascript
正则表达式基础与常用验证表达式
Jun 16 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 短链接算法收集与分析
2011/12/30 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
php实现读取内存顺序号
2015/03/29 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
Babel 入门教程学习笔记
2018/06/13 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
tensorflow自定义激活函数实例
2020/02/04 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
Linux如何压缩可执行文件
2014/03/27 面试题
UNIX命令速查表
2012/03/10 面试题
财务会计应届生求职信
2013/11/24 职场文书
转预备党员政审材料
2014/02/06 职场文书
住宅使用说明书
2014/05/09 职场文书
语文教育专业求职信
2014/06/28 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers