最近在做项目的时候 遇到一个需求 控制 input 框中 只能 输入数字 ,最大长度是8位 ,输入的数字 每三位 显示效果要加 一个点 “.”
遇到的 第一个 问题 : 如何 让用户输入的时候 每隔三位会自动加点:
解决方式 :我是把这个el-input 框 写成了组件 然后两个 样式设置 一样,把 两个input 输入框叠加在一起 最上面的input 框设置为 透明的 ,用户 输入的内容 调用一个input 事件处理之后让下面的 显示
this.value= this.value.replace(/\s/g, "").replace(/...(?!$)/g,"$&.");
遇到第二个 问题 : 如何 让用户输入的时候只能输入数字 、
- 尝试方式一:v-model.number
发现问题 可以输入"e",".", "- "等一些特殊符号 , 而且 设置的maxLength会失效 - 尝试 方法二:
this.value= this.value.replace(/\s/g, "").replace(/...(?!$)/g,"$&.");
但是后面还是出现了各种问题 …比如用户移动光标 修改数据时,用户看到的光标位置 实际上是没有带点的 所以光标位置会不太一样 。
但是依旧可以用这个正则来解决 这个问题
this.value= this.value.replace(/\s/g, "").replace(/...(?!$)/g,"$&.");
最后 又发现 一个问题 ,我发现我真的是在写bug ,
用户在移动光标修改 数据时,一修改完,数据就刷新 光标就会自动回到最后面。
目前这个问题正在研究=-=