如何限制只允许用户在表单中输入十进制的数呢?

2017-09-23 10:35:43 +08:00
 gap
不允许输入其他譬如十六进制的数,譬如 1e4, 1e100 等,我用 parseInt, isNaN, 正则貌似都无法实现
4017 次点击
所在节点    JavaScript
25 条回复
sunchen
2017-09-23 10:37:02 +08:00
正则 \d+ 不行?
lslqtz
2017-09-23 10:38:31 +08:00
判断是不是太大不就好了…
有时十进制和十六进制会冲突吧
geelaw
2017-09-23 10:49:40 +08:00
@sunchen 当然不行,因为 \d 的范围比 [0-9] 大。

只能要求输入的东西可以被理解为十进制,而不能要求输入的东西“是”十进制。
xcatliu
2017-09-23 10:50:28 +08:00
1e4 1e100 一般是指科学计数法吧
bkmi
2017-09-23 10:54:46 +08:00
兄台,你列的那叫科学记数法,16 进制 0x 开头,不妨把你碰到的问题说出来
TigerK
2017-09-23 11:06:05 +08:00
直接用整数啊
sunchen
2017-09-23 11:10:57 +08:00
@geelaw 10 可以同时表示 16 进制的 16 和 10 进制的 10,没有指明进制你怎么判断
geelaw
2017-09-23 11:26:16 +08:00
@sunchen 空了一行的部分是回复题主的,你是在把我的话具体化吗?
gap
2017-09-23 11:28:46 +08:00
@bkmi

看来基础不牢...是这样的, 我有个 reduce 求和的方法,遇到 1e4 类似的输入就会出问题...还望指点

function total(target = [{ amount: '100' }, { amount: '200'}]) { return target.reduce((total, obj) => total + obj.amount, 0) }

total() // 0100200

function total(target = [{ amount: '100' }, { amount: '200'}]) { return target.reduce((total, obj) => total + parseInt(obj.amount), 0) }

total() // 300

total([{ amount: '1e4' }]) // 1
annielong
2017-09-23 11:34:01 +08:00
用 j 前台判断吧,最基本的的就是不允许 0-9 以外的键值输入
xcatliu
2017-09-23 11:34:08 +08:00
@gap 应该可以把 parseInt 换成 Number,这个才是字符串转数字的方法,如果转成了 NaN 就抛异常即可
schezukNewTos
2017-09-23 11:34:49 +08:00
schezukNewTos
2017-09-23 11:36:27 +08:00
*typo
搜索 javascript Scientific Notation

Number("4.874915326E7")
yhxx
2017-09-23 11:43:08 +08:00
那不是进制
是科学计数法
Sapp
2017-09-23 11:45:08 +08:00
你直接不让输入数字以外的不就行了吗?
noe132
2017-09-23 11:49:46 +08:00
监听 keypress,遇到非 0-9 e.preventDefault()
gap
2017-09-23 11:58:20 +08:00
感谢大家!太弱鸡了,把科学计数法当成十六进制了...
geelaw
2017-09-23 12:25:14 +08:00
@noe132 这是不对的,因为粘贴并不会引发这个事件
dong3580
2017-09-23 13:02:27 +08:00
正则啊😂
SingeeKing
2017-09-23 16:12:21 +08:00
正则 \d+ 不行?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/393003

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX