Bug Type:Component
Environment
- Vue Version:
3.2.33
- Element Plus Version:
2.1.11
- Browser / OS:
UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.50
- Build Tool:
CDN
Reproduction
Related Component
el-input
Reproduction Link
Element Plus Playground
Steps to reproduce
打开复现链接玩玩就知道了。应该做到要保持未格式化前的值,比如输入123456,在formatter里进行格式化成123,456, v-model 的值应该是123456,而不是把v-model也变了。可能你会说不是提供了parse函数吗,parse 函数的入参也是格式化的值,并没有保持未格式化前的值。
很多时候,格式化只是用于显示的,实际提交数据到后台的时候是需要未格式化前的值的。
What is Expected?
v-model 的值能保持未格式化前的值,parse函数的入参也应该是未格式化前的值
What is actually happening?
v-model 和 parse 函数的值都是格式化后的值
Additional comments
无
5条答案
按热度按时间mwyxok5s1#
parser 函数可以提供2个参数,一个是未格式化的,一个是格式化的
提供了formatter,parser是一大进步,相当于把最大自由度都交给了具体的使用者,但是在组件内部维护一个变量来持有未格式化的值,是一件很容易的事,但是对于使用者来说却是省了很多事
比如对于数字千分位格式化来说,可以在formatter函数里调用 Number 的 toLocaleString() 进行正确的格式化,在parser里可以简单的返回未格式化的值
l7wslrjt2#
parser 函数可以提供2个参数,一个是未格式化的,一个是格式化的
提供了formatter,parser是一大进步,相当于把最大自由度都交给了具体的使用者,但是在组件内部维护一个变量来持有未格式化的值,是一件很容易的事,但是对于使用者来说却是省了很多事
比如对于数字千分位格式化来说,可以在formatter函数里调用 Number 的 toLocaleString() 进行正确的格式化,在parser里可以简单的返回未格式化的值
我期望的是在el-input-number组件增加formatter功能
hec6srdp3#
parser 函数可以提供2个参数,一个是未格式化的,一个是格式化的
提供了formatter,parser是一大进步,相当于把最大自由度都交给了具体的使用者,但是在组件内部维护一个变量来持有未格式化的值,是一件很容易的事,但是对于使用者来说却是省了很多事
比如对于数字千分位格式化来说,可以在formatter函数里调用 Number 的 toLocaleString() 进行正确的格式化,在parser里可以简单的返回未格式化的值
我期望的是在el-input-number组件增加formatter功能
这个应该也容易的吧,毕竟在el-input 里面已经实现了,不过我觉得你应该单独开一个issue更好点
ffdz8vbo4#
/cc @Serendipity96
umuewwlo5#
或许可以参考借鉴下 inputmask 的方案,扩展性会更强
https://robinherbots.github.io/Inputmask/