首页 > 其他分享 >Vue【原创】千位符输入框(不仅只是过滤器哦)

Vue【原创】千位符输入框(不仅只是过滤器哦)

时间:2023-08-24 11:00:41浏览次数:75  
标签:Vue 千位 default toNormal replace 输入框 str type

最近和一个做金融的朋友讨论到千位符输入的问题,后来一想貌似自己项目中也会经常碰到金额数字这种输入框,要么自己做一个吧。

首先肯定要有一个正则表达式,也就是过滤器的方案里面常用的正则:

1 filters: {
2         _toThousandFilter(str, that) {
3             return that._toNormal(str).replace(/(^|\s)\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','));
4         }
5     }

 

这个是基于el-input做的拓展,换其他的或者甚至原生的思路都一样,无非是要自己包装一个关于千位符的双向绑定,我这里都是做插件的形式封装,你也可以直接引用组件即可。

 1 <template>
 2     <el-input 
 3         v-bind:value="value | _toThousandFilter(this)" 
 4         v-on:input="input" 
 5         :clearable="clearable" 
 6         :disabled="disabled"
 7         @blur="_dispatchComponentEvent($event, 'blur')"
 8         @change="_dispatchComponentEvent($event, 'change')"
 9         @focus="_dispatchComponentEvent($event, 'focus')"
10         @clear="_dispatchComponentEvent($event, 'clear')"/>
11 </template>
12 <script>
13 export default {
14     name: 'LiloThounsandInput',
15     props: {
16         value: {
17             type: [String, Number],
18             default: ''
19         },
20         clearable: {
21             type: Boolean,
22             default: false
23         },
24         disabled: {
25             type: Boolean,
26             default: false
27         },
28          placeholder: {
29              type: String,
30              default: ''
31          }
32     },
33     filters: {
34         _toThousandFilter(str, that) {
35             return that._toNormal(str).replace(/(^|\s)\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','));
36         }
37     },
38     methods: {
39         _toNormal(str) {
40             return str.toString().split(',').join('');
41         },
42         input(val) {
43             const result = this._toNormal(val);
44             this.$emit('input', result);
45         },
46         _dispatchComponentEvent(event, eventType) {
47             this.$emit(eventType, event);
48         }
49     }
50 };
51 </script>
52 
53 <style></style>

 

欢迎各路大佬指导、提问~

标签:Vue,千位,default,toNormal,replace,输入框,str,type
From: https://www.cnblogs.com/loveFlex/p/17653632.html

相关文章

  • 创建web应用程序,React和Vue怎么选?
    React和Vue都是创建web应用程序的绝佳选择。React得到了科技巨头和庞大的开源社区的支持,代码库可以很大程度地扩展,允许你创建企业级web应用程序。React拥有大量合格甚至优秀的开发人员粉丝,可以解决你在开发阶段可能遇到的任何问题。毫无疑问,React是创建跨平台解决方案的最佳框架......
  • vue--day69---vuex
    1. vuex是什么概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。2. 什么时候使用Vuex1.多个组件依赖于同一状态2.来自不同组件的行为需要变更同一状态......
  • vue--day68--插槽的总结
    ##插槽1.作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于<strongstyle="color:red">父组件===>子组件</strong>。2.分类:默认插槽、具名插槽、作用域插槽3.使用方式:   1.默认插槽:   ```vue   父组件中:    ......
  • vue--day67--作用域插槽
    1.App.vue <template><divclass="container"> <Categorytitle="游戏"><templatescope="atgui"><ul><liv-for="(g,index)inatgui.games":key="i......
  • Vue和JSP的区别
    JSP简化的Servlet设计,在HTML标签中嵌套Java代码,用以高效开发Web应用的动态网页JSP 全名为 Java Server Pages,中文名叫 java 服务器页面,其根本是一个简化的 Servlet 设计,它是由Sun Microsystems 公司 倡导、许多公司参与一起建立的一种动态网页技术标准。JSP 技术是在传......
  • Vue基础学习(第一篇Blog)
    在HTML+CSS+JavaScript前端三件套后,Vue的出现就显得很有必要了Vue是一种前端开发JS框架,它的出现使传统的面向JS中的DOM对象模型的开发效率得到了提升。Vue的核心思想是MVVM(Model-View-ViewModel)模型,这种模型使得前端的页面显示同后端数据模型相结合,这种模型使得视图端和数据端保......
  • vue复习
    vuevue是什么?它是一个轻量级MVVM框架数据驱动+组件化的前端开发Github超过25K+的star熟,社区完善Vue.js更轻量,gzip后大小只有26K;更易上手,学习曲线平稳形成Vue渐进式框架的核心概念为:组件化,MVVM,响应式,和生命周期vue的优缺点优点1.轻量级Vue作为一款轻量级前端框架,大......
  • Vue packages version mismatch:
    报错原因:vue与vue-template-compiler版本不匹配。解决办法:上图中说了看看使用vue-loader的版本,我的是13版本大于10.0版本,这个时候需要更新vue-template-compiler//卸载npmuninstallvue-template-compiler//添加和vue一样的版本[email protected]......
  • vue之写好地框架
    上次说不想写样式,然后计划在网上找个写好的上网找了一下,选了一个maku-element-admin 这个感觉不错然后下载下来,当然了,下载下来肯定能正常运行,虽然能用,但是我没忘记我的目的是学习然后自己建环境,把里面的东西一步步移过来学习, (个人认为,遇到问题是学习最快的路)然后出现各种......
  • 解决vue项目中虚拟键盘弹起将页面中底部按钮上移问题
    在vue中使用定位将表单中的取消,确认按钮固定在底部时,安卓手机在编辑表单内容时会将底部按钮整体往上移动,按钮出现在虚拟键盘上面,此时可以通过监听虚拟键盘的弹起与收起来控制键盘的显示与隐藏,以解决按钮显示在虚拟键盘之上的问题,没有时间赘述,附上转载链接:https://blog.csdn.net......