html - 输入类型 ="number"与货币格式(千位分隔符)

标签 html

这个问题已经被问过很多次,并且已经提供了大量示例,要么使用大量 JavaScript,要么使用 inputmodepattern带有一些正则表达式的属性。然而,这些似乎都不能与数字键盘一起使用(至少在我的 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/

相关文章:

html - 将页眉保持在固定位置时居中问题

html - div 被其他 div 推来推去或不出现

html - JBoss 4.2.3 JSP 包含一个 UTF-8 html 文件,没有正确显示

javascript - jQuery 轮播/画廊无法正常工作

html - ReactJS 组件文本区域未在状态更改时更新

html - Twitter Bootstrap 定制和下载

android - 如何阻止 "Go"按钮被替换为 "Next"- Chrome Android 浏览器应用程序

javascript - 如何在 UIWebview 中将 XCode 变量传递给本地 HTML

javascript - 使用 JQuery 将事件监听器添加到动态添加的元素?

php - 有没有办法将 vBulletin 集成到 PHP 中?