【问题标题】:HTML5 input type number currency validation failingHTML5 输入类型数字货币验证失败
【发布时间】:2015-07-30 12:05:03
【问题描述】:

我有一个货币文本框,我已将类型设置为数字以输入具有两位数精度的值,并限制输入字母或符号,使其始终为 0.00 格式。表单中的所有文本框似乎都可以正常验证,直到一个文本框下降约 7 个值。 HTML5 验证发生并以红色突出显示,并在允许提交表单之前声明“您必须输入有效值”。我看不出这个值是如何无效的。我尝试了多种模式。我“需要”拥有 type=number 以允许在移动设备中设置正确的键盘。将类型设置为文本,数字键盘不显示。

这是引发错误的输入:

input name="ctl00$MainContent$lvAccounts$ctrl6$txtAccountBalance" tabindex="21" class="MoneySelection jqNumeric ThisRow" id="ctl00_MainContent_lvAccounts_ctrl6_txtAccountBalance" type="number" step="0.01" pattern="^\d+\.\d{2}$" value="40980.66"

但就在上面,以及它们似乎通过的其他框(假设从上到下验证):

input name="ctl00$MainContent$lvAccounts$ctrl5$txtAccountBalance" tabindex="21" class="MoneySelection jqNumeric ThisRow" id="ctl00_MainContent_lvAccounts_ctrl5_txtAccountBalance" type="number" step="0.01" pattern="^\d+\.\d{2}$" value="16374.29"

还有一个奇怪的地方...我将值设置为 41980.66 并且验证良好。我设置为 39980.66 失败,设置为 31980.66 并验证。

我已经阅读了表单上的 novalidate 选项,但这会影响/否定任何 RequiredFieldValidators 吗?如果正则表达式不正确,为什么它适用于某些值而不适用于其他值?

我尝试了不同的模式和内联与 jQuery 属性,但没有成功。我能够使用 IE11 作为我的浏览器在 jsFiddle 上重新创建 http://jsfiddle.net/8821dhfj/

【问题讨论】:

  • 我可以确认 Chrome 没有这个问题。使用 min 和 max 属性时,它“似乎”可以解决问题,但只会更改引发验证错误的美分值。将 41980.66 更改为 41980.67 失败jsfiddle.net/8821dhfj/2

标签: html validation


【解决方案1】:

不要在 JavaScript 中使用 type = "number"。好像不支持 IE。

或使用Number polyfill

【讨论】:

  • 感谢您的参考,但 IE 似乎有其自身的问题。如果没有输入 type=number,似乎没有其他方法可以在移动设备中显示数字键盘。
  • 使用 怎么样?这将显示数字键盘。
猜你喜欢
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多