这个问题已经被问过很多次,并且已经提供了大量示例,要么使用大量 JavaScript,要么使用 inputmode
或pattern
带有一些正则表达式的属性。然而,这些似乎都不能与数字键盘一起使用(至少在我的 iPhone 上)。
因此我的问题是:这不可能吗? (简单明了的 HTML5)
我需要一个<input>
对于具有即时格式的货币,可以像这样编辑数字:1,000,000.00
或者,更改国家/地区时,更改为 1 234 567,89
并且出现数字键盘(对于手机很重要)。注意千位分隔符。
最佳答案
今天只有 HTML5 无法工作。 (2016年6月6日)
您想要是这样的:
<input type="text" pattern="your-pattern" inputmode="numeric">
但是,inputmode
尚不支持任何浏览器。
上面的代码解释:
- 我们不能使用
type="number"
,因为该类型不支持pattern
属性,因此我们使用type="text"
。更好的选择可能是type="tel"
因为它还涉及数字和分隔符。但是,我不知道这的语义含义(例如在 SEO 和屏幕阅读器上)。最安全的方法是text
inputmode
是新的,允许您指定需要哪种输入模式。正如您可以想象的那样,对于移动设备特别有用
考虑到您想要从一种标准表示法动态转换为另一种标准表示法,您将必须使用 JavaScript,以便如果您确实想使用 number
类型,则可以将其用于模式验证。或者也许还有另一个公共(public) API 可以通过 JS 控制键盘(但我怀疑,可能会导致安全问题)。
最后,一如既往:如果您的验证很重要,请在服务器端进行。客户端永远不应该被信任。 (即使他们有cookie。)
关于html - 输入类型 ="number"与货币格式(千位分隔符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37659841/