美文网首页
【JS 】实现数字格式化效果

【JS 】实现数字格式化效果

作者: 冰麟轻武 | 来源:发表于2022-10-25 23:28 被阅读0次

介绍

最近公司改造老项目,要将数字类型的显示效果做统一处理;
一个一个改显然不现实,所以做了一个公共组件统一处理;

对数字格式的要求主要有:小数保留位数、是否显示千分符、小数位不足是否补零、小数截断模式
另外还附加一个显示效果 居中、居左、居右
还要分不同类型来控制,比如金额,数量使用不同格式;

主要功能类分为3个

  • NumberExtensions.js // 数字格式配置,数字剪切,格式化等核心功能
  • NumberExtensions.jQuery.js // 基于 jQuery 自动渲染 input 框
  • NumberExtensions.Vue.js // 基于 Vue2 自定义组件 number-input (还有一部分页面是基于vue2做的)
    源码:gitee

效果展示

目前功能已完成,效果如下:数字输入框JQuery版 demo源码预览下载- JSRUN


使用方法

$(function(){
    /**
     * 设置小数样式
     * @param {String|String[]} styleKeys 样式名称和别名。如:["price","p"]
     * @param {Object} config 配置。如: { decimals: 4, mode: "Round", thousands: true, zreofill: false, align: "left", units: {} };
     *   decimals: 小数保留位数 0~20
     *   mode: 小数截取方式 Round-四舍五入/Ceil-向上取整/Floor-向下取整
     *   thousands: 是否显示千分位 true/false
     *   zreofill: 小数位不足是否补零 true/false
     *   align: 对齐方式 left/right/center
     *   units: 单位配置
     * @param {String} unit 单位
     */
    Number.setConfig("price", "p"], { decimals: 4, mode: "Round", thousands: false, zreofill: false, align: "right" });
})

// 根据配置截取小数位数
var price = 1.234567.scale("p"); 

// 根据配置格式化数字字符串
var priceStr = 1234567.8.format("p"); 

// 同时操作截取和格式化
var str = number.scaleformat("p");

// 静态方法,可以在不确定变量类型的情况下编码
var str = Number.scaleformat(number,"p") || "-" //当参数number无法转为数字时,返回null
// Number.scale(number,"p")
// Number.format(number,"p")

// Number.parse 方法,方便转换数字,排除正负无穷,可正确处理千分符
var number = Number.parse('1,234,567.76') || 0;

基于 jQuery

<!-- number-style="price"  数字样式 -->
<!-- number-unit="元"   样式单位(可忽略) -->
<!-- number-strict  严格数字(丢失焦点时如果内容为非数字,可恢复上次正确的数字) -->
<!-- number-max="100" 数字内容最大不能大于该值 -->
<!-- number-min="0"   数字内容最大不能小于该值 -->
<input number-style="price" number-unit="元" number-strict number-max="100" number-min="0" />

<script>
  $(function(){
    // 设置数字格式,可结合实际情况从API中获取页面设置效果
    Number.setConfig("price", "p"], { decimals: 4, mode: "Round", thousands: false, zreofill: false, align: "right" });
    // 渲染页面
    Number.render();
  })
</script>

基于Vue

<div id="app">
  <!-- 属性参考 jQuery 部分 -->
   <number-input number-style="price" number-strict number-min="100" number-max="9999.99" v-model="price" />
</div>

<script>
  // 设置数字格式,可结合实际情况从API中获取页面设置效果
  Number.setConfig("price", "p"], { decimals: 4, mode: "Round", thousands: false, zreofill: false, align: "right" });
  var app = new Vue({
      el: '#app',
      data: {
        price: 12345
    }
  });
</script>

相关文章

  • 【JS 】实现数字格式化效果

    介绍 最近公司改造老项目,要将数字类型的显示效果做统一处理;一个一个改显然不现实,所以做了一个公共组件统一处理; ...

  • JS数字格式化

    JS实现数字格式化输出,比如输入999999999,输出9,999,999,999

  • js实现数字格式化

    分享一个格式化数字的方法也适用于负数 每三位数用","间隔,第一个参数是传入的数值,第二个参数是需要保留的小数点后...

  • Vue实现选项卡效果

    效果图:点击上方选项卡实现下方数字切换效果 body部分: js部分: style部分:

  • echarts在页面显示两位小数

    要求实现效果:仪表盘上显示数字保留两位小数 效果图: html部分: js部分:

  • 原生JS实现Tab切换效果和模态框效果

    原生JS实现Tab切换效果 效果展示 原生JS实现模态框效果 效果展示

  • 常用依赖

    1. 实现数字滚动 动态效果 https://github.com/inorganik/CountUp.js 2....

  • 点赞的两种实现效果

    本章主要记录点赞的两种效果: 点赞效果1: 实现类似如下的点赞+1,数字从下往上飘动的动画(JS实现+CSS3实现...

  • JS好用的库

    JS 日期处理Moment.js 格式化和操作数字Numeral.js 加密库crypto-jsSparkMD5 ...

  • jQuery基础知识

    jQuery jQuery能实现的效果,js都能实现;js能实现的效果,jQuery未必能实现 jQuery大体分...

网友评论

      本文标题:【JS 】实现数字格式化效果

      本文链接:https://www.haomeiwen.com/subject/fhiozrtx.html