当我需要存储不同精度的浮点数时,如何定义HTML的输入字段?
How to define HTML's input field when I need to store floating numbers of varying precision?
我需要一个可以存储数字的输入表单元素,例如:
- 4.6050927694997500
- 0.0384623400229826
- -0.0000317620199043
- 等等
目前为了能够输入这样的数字,HTML 规范要求您设置步长值,如下所示:
<input type="number" step="0.0000000000000001">
我觉得定义一个如此小的步长值和这么多零有点奇怪。
有更好的方法吗?我应该只为我的浮动数字使用 text
字段类型而不是 number
吗?
是的,这是个好主意 您必须使用 text
字段(它没有 up/down 按钮 – 您可以使用 JS 来创建它们).最好使用 pattern
属性来通知用户输入无效。
<!-- TRY THIS SNIPPET -->
negative or positive
<input pattern="-?[0-9]+(\.[0-9]+)?" value="0">
<hr>
only positive
<input pattern="[0-9]+(\.[0-9]+)?" value="0">
<hr>
negative or positive supporting "scientific" format (eg. 5.3e-5)
<input pattern="-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?" value="0">
<hr>
positive supporting "scientific" format (eg. 5.3e-5)
<input pattern="[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?" value="0">
<hr>
Try entering some numbers (5, -5, 5.5, -5.5, -4.556e5, 4.556e5)
另外(如 type=number
字段的情况)在服务器上检查它(如果已发送)。
我需要一个可以存储数字的输入表单元素,例如:
- 4.6050927694997500
- 0.0384623400229826
- -0.0000317620199043
- 等等
目前为了能够输入这样的数字,HTML 规范要求您设置步长值,如下所示:
<input type="number" step="0.0000000000000001">
我觉得定义一个如此小的步长值和这么多零有点奇怪。
有更好的方法吗?我应该只为我的浮动数字使用 text
字段类型而不是 number
吗?
是的,这是个好主意 您必须使用 text
字段(它没有 up/down 按钮 – 您可以使用 JS 来创建它们).最好使用 pattern
属性来通知用户输入无效。
<!-- TRY THIS SNIPPET -->
negative or positive
<input pattern="-?[0-9]+(\.[0-9]+)?" value="0">
<hr>
only positive
<input pattern="[0-9]+(\.[0-9]+)?" value="0">
<hr>
negative or positive supporting "scientific" format (eg. 5.3e-5)
<input pattern="-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?" value="0">
<hr>
positive supporting "scientific" format (eg. 5.3e-5)
<input pattern="[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?" value="0">
<hr>
Try entering some numbers (5, -5, 5.5, -5.5, -4.556e5, 4.556e5)
另外(如 type=number
字段的情况)在服务器上检查它(如果已发送)。