【问题标题】:HTML Number Input removes decimal point?HTML数字输入删除小数点?
【发布时间】:2013-02-06 05:57:28
【问题描述】:

我在表单上输入的数字有问题。当我输入一个数字,比如 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;
}

【问题讨论】:

  • 我相信&lt;input type="number"&gt; 只接受整数作为有效值。任何允许的小数都可能是浏览器不正确/未实现的验证。
  • 注意:欧洲人使用逗号作为小数点。你能在某个地方强制设置文化设置吗?
  • 我知道我们使用不同的标记,但有没有办法让它不删除点?如果其他人进入 88.2 会出现 882,真的很烦人。
  • @SteveWellens 我不知道那会在哪里,我在 Google 上只能找到 ASP.NET 结果。
  • @JesperHallenberg - 首先找出/决定它是发生在浏览器还是服务器上。由于服务器是不变的,并且浏览器和区域设置不同,它可能在浏览器中。 (或者服务器正在检测浏览器设置并做出反应)。您可以使用 Fiddler 或一些嗅探工具进行检查。当您搜索使用 -asp.net 过滤掉 asp.net 命中。其他人也有同样的问题:zen-cart.com/…

标签: html input point


【解决方案1】:

type='number' step='any' 可能会解决问题。

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

【讨论】:

    【解决方案2】:

    Support to &lt;input type=number&gt; 仍然非常有限、不完整且有缺陷。

    例如,IE 10 和 Firefox 19 不支持。在它们上,元素回退到 &lt;input type=text&gt; 元素,这意味着任何字符串都被接受为输入并传递给服务器,没有检查。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多