【发布时间】: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