我在表单上输入数字时遇到问题。当我输入一个数字,比如 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;
}
最佳答案
Support to <input type=number>
仍然非常有限、不完整和错误。
例如,IE 10 和 Firefox 19 不支持。在它们上,元素回退到 <input type=text>
。元素,这意味着任何字符串都被接受为输入并传递给服务器,没有检查。
在支持它的浏览器上,例如 Chrome,行为会有所不同,并且预计会有所不同,因为 HTML5 CR definition故意让它打开:浏览器需要以某种方式为数字输入提供一个小部件,并保证最终发送到服务器的数据根据元素的属性(在给定范围内等)是正确的。
在实践中,实现取决于浏览器的区域设置,作为作者,您无法控制它。这意味着浏览器可能接受 88.2,或者它可能接受 88,2(并在内部将其转换为 88.2),或者它可能同时接受两者,或者它可能原则上只接受象形文字的输入(并在内部将其转换为规范形式)。它甚至可能会解析用户输入,以便丢弃任何额外的字符,这意味着当逗号是小数点分隔符时,88FOO 和 88.2 可能会被截断为 88。
你的情况下会发生什么很难决定,因为没有描述浏览器和平台,也不清楚服务器得到了什么。但重要的是 <input type=number>
根本不能依赖。它可以在受控环境中使用,在这种环境中,每个人都在同一操作系统中使用相同版本的相同浏览器,包括语言版本和区域设置。否则,使用 <input type=text>
对于数字输入并在服务器端解析输入,并可选择在客户端对其进行预检查,并确保告知用户预期的输入格式(例如十进制逗号与小数点)。
关于HTML 数字输入删除小数点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993302/