如何只允许输入两个小数点

How to Make Input Only Allow Two Decimal Places to be Entered?

本文关键字:小数点 两个 输入 许输入      更新时间:2023-09-26

我不知道如何做到这一点,但我相信它可以用JavaScript或PHP完成。我是否可以输入一个只允许输入小数点后两位的数字?从本质上讲,我希望输入在小数点后两位停止输入数字,而不是在输入了五位时出错。

我不是在寻找一个验证器,而是一个阻止任何超过小数点后2位的输入的抑制剂。

如果有人知道如何做到这一点或能提供任何帮助,我们将不胜感激。谢谢你的帮助。

首先,编写一个修剪函数

function trimDP(x, dp) {
    if (dp === 0)
        return Math.floor(+x).toString();
    dp = Math.pow(10, dp || 2);
    return (Math.floor((+x) * dp) / dp).toString();
}
// ex.
trimDP("1.2345"); // "1.23"

接下来,将此微调功能设置为应用于按键更改到您的<input>,例如,通过给它们类令牌dp2

<input type="text" value="0" class="dp2" />
(function () { // do this after nodes loaded
    var nodes = document.querySelectorAll('.dp2'), i;
    function press(e) {
        var s = String.fromCharCode(e.keyCode);
        if (s === '.')
            if (this.value.indexOf('.') === -1)
                return; // permit typing `.`
        this.value = trimDP(this.value + s);
        e.preventDefault();
    };
    function change() {
        this.value = trimDP(this.value);
    }
    for (i = 0; i < nodes.length; ++i) {
        nodes[i].addEventListener('keypress', press);
        nodes[i].addEventListener('change', change);
    }
}());

您可能还想阻止非数字键

DEMO

如果这是一种预防,那么我会在php中进行,因为您几乎总能在javascript中找到绕过预防的方法。

也许还可以将它与Javascript函数结合起来,这样用户就可以获得格式化帮助,并将其作为最终的预防措施?

要在php中执行此操作,可以使用number_float()函数:

$foo = "105";
echo number_format((float)$foo, 2, '.', '');  // Outputs -> 105.00

PHP:显示小数点后2位的数字