6

我在表单上输入的数字有问题。当我输入一个数字,比如 88.2 并提交时,没有问题。但是当这个其他人做同样的事情时,如果你从数字输入中回显变量,你可以在 php 代码中看到它已经删除了小数点 ( .)。

当他使用逗号时,它不会删除他的小数点,但是,当我使用逗号时,它会为我删除它。有什么办法可以解决这个问题,让它只接受“。” 作为小数点?

这是输入:

<input id="version" name="version" step="0.1" min="1.0" max="250.0" type="number" class="input-small" placeholder="87.2"></input>

PHP 代码中没有什么不寻常的地方,只有

echo $_POST['version'];

input-small css

.input-small {
  width: 90px;
}
4

2 回答 2

3

type='number' step='any' 可以解决这个问题。

http://dev.w3.org/html5/markup/input.number.html

于 2014-02-26T21:46:53.300 回答
3

对 的支持<input type=number>仍然非常有限、不完整且有缺陷。

例如,在 IE 10 和 Firefox 19 上不支持。在它们上,元素回退到<input type=text>元素,这意味着任何字符串都被接受为输入并按原样传递给服务器,无需检查。

在支持它的浏览器(例如 Chrome)上,行为会有所不同,并且预计会有所不同,因为 HTML5 CR定义故意将其保持打开状态:浏览器需要以某种方式提供用于数字输入的小部件,并保证数据最终发送到根据元素的属性(在给定范围内等),服务器是正确的。

实际上,实现取决于浏览器的语言环境,作为作者,您无法控制它。这意味着浏览器可能接受 88.2,或者它可能接受 88,2(并在内部将其转换为 88.2),或者它可能同时接受两者,或者原则上它可能只接受象形文字中的输入(并在内部将其转换为规范形式)。它甚至可能会解析用户输入,以便丢弃任何额外的字符,这意味着当逗号是小数点分隔符时,88FOO 和 88.2 可能会被截断为 88。

在您的情况下会发生什么很难决定,因为尚未描述浏览器和平台,并且不清楚服务器会得到什么。但重要的是,<input type=number>根本不能依赖它。它可以在受控环境中使用,每个人在同一操作系统中使用同一版本的同一浏览器,包括语言版本和区域设置。否则,<input type=text>用于数字输入并在服务器端解析输入并可选择在客户端预先检查它,并确保告知用户预期的输入格式(例如十进制逗号与小数点)。

于 2013-02-21T06:26:47.420 回答