您不能在 HTML 中创建一个固定有特定字符的文本框。也几乎没有任何必要,因为用户输入 12.34(指定金额时)比输入 1234 并自动插入句点更自然。
pattern
您可以使用 HTML5属性指定所需的格式。并非所有浏览器都支持它,但在不支持时它不会造成任何伤害,并且即使在禁用 JavaScript 时它也会执行检查。您当然应该添加 JavaScript 检查,在这样的简单情况下,最好直接编写代码而不是使用任何库:
<input pattern="\d?\d\.\d\d" maxlength=5 size=5 onchange="check(this)">
<script>
function check(elem) {
if(!elem.value.match(/^\d?\d\.\d\d$/)) {
alert('Error in data – use the format dd.dd (d = digit)');
}
}
</script>
使用的正则表达式同时接受 dd.dd 和 d.dd(省略?
以仅允许第一种格式)。
该示例alert
为简单起见;在真实页面中,您应该使用一些破坏性较小的方式向用户发出错误信号(通常,将文本写入为此类消息保留的区域),但最好的方式取决于整个页面的设计.
(使用 似乎更合乎逻辑<input type=number min=0 max=99.99 step=0.01 ...>
,但这会引发严重的本地化问题,而且浏览器的实现type=number
相当糟糕。最重要的是,不能保证发送的数据符合所需的格式。例如,在 Chrome 中,使用由浏览器创建的控件,数字将从 0.09 到 0.1 而不是 0.10,从 0.99 到 1 而不是 1.00 等)