我在表单上输入的数字有问题。当我输入一个数字,例如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;
}
答案 0 :(得分:3)
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>
。它可以在受控环境中使用,在这种环境中,每个人在同一操作系统中使用相同版本的同一浏览器,包括语言版本和语言环境设置。否则,使用{{1}}进行数字输入并解析输入服务器端并可选择预先检查它是否为客户端,并确保通知用户预期的输入格式(例如十进制逗号与小数点) )。
答案 1 :(得分:3)
type ='number'step ='any'可以解决问题。