在基于小数的输入字段上设置小于数字的最大值
Posted
技术标签:
【中文标题】在基于小数的输入字段上设置小于数字的最大值【英文标题】:Setting a maximum value less than a number on a decimal based input field 【发布时间】:2016-01-13 15:03:51 【问题描述】:我正在创建一个接受任意小数位数的输入字段。我想将此输入验证为大于等于 5 且小于 100 的数字。使用 min
和 max
属性,我能够创建以下 html sn-p。它似乎在每个浏览器中都能正常运行,但看起来很糟糕。
<input type="number" step="any" min="5" max="99.9999999999999999" required>
有没有一种体面的方法来做到这一点(没有四舍五入的恶作剧)?
我知道这可以使用 javascript 轻松解决,但我想知道是否有一种仅使用 HTML 的好方法。我正在尝试验证具有 HTML5 表单验证但没有 JavaScript 的用户的输入。在服务器端检查此输入会强制用户再次加载页面,这是我试图避免的。
【问题讨论】:
max属性定义top值,包含定义值。要更改此行为,您应该使用 javascript 添加一种附加验证:检查数字是否为 100 或直接将 min max 属性替换为 this。 @LelioFaieta 我知道 JavaScript 验证,并且在提交表单之前已经使用它再次检查输入(以防浏览器不支持某些属性)和服务器端.我只是想知道是否有一种体面的方法可以使用min
、max
属性自 99.999... 返回一条消息,该数字应低于 100 而不是 99.999...。这可能只是不过在消息中四舍五入。
正如我之前告诉你的:根据 HTML 规范,指定的最大值始终包含在范围内。所以你不能用普通的html做更多的事情
您是否尝试过降低您的系数(十进制数字)?保持在 13 位以下,浏览器会显示正确的验证信息。 max
属性is a floating-point number 和algorithm to convert a string to a number 在value sanitization algorithm......期间应用......
......查看 Chromium 源代码,它似乎通过serializeForNumberType
返回验证消息,而serializeForNumberType
又执行toString
转换小数点,将其四舍五入maxDigits
是 DBL_DIG
的常量。
【参考方案1】:
也许您想在 Google 的 <head>
中包含这种 css 样式,这会使输入字段看起来比浏览器中的标准输入字段更好:
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
【讨论】:
以上是关于在基于小数的输入字段上设置小于数字的最大值的主要内容,如果未能解决你的问题,请参考以下文章