2014-04-10 117 views
0

我不知道如何做到这一点,但我相信这可以通过JavaScript或PHP完成。无论如何,我可以输入一个只允许输入2位小数的输入吗?本质上,我希望输入在两位小数后停止输入数字,而不是在输入五位数字时出错。如何使输入只允许输入两个小数位数?

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

如果有人知道如何做到这一点或可以提供任何帮助,将不胜感激。感谢您的任何帮助。

回答

1

首先,写一个微调功能

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" 

下一步,设置此剪裁功能是应用于按键onchange t您的<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

+0

好的,我几乎没有使用JavaScript的经验。我将如何在简单的“HTML”页面上设置它? – Kelsey

+0

在您的演示中,它不允许小数点后的任何数字。 – Kelsey

+0

@Kelsey抱歉,是的,我忘记了订单发生的事情 - 现在修改了代码,请再次尝试演示 –

1

如果这是一个预防措施,那么我会在php中这样做,因为您几乎总能找到一种解决javascript问题的方法。

也许把它与Javascript函数结合起来,这样用户就可以获得格式化帮助并将其作为一个明确的预防?

在PHP中做到这一点,你可以使用number_float()功能:

$foo = "105"; 

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

PHP: show a number to 2 decimal places

+0

我需要而被输入它,它的格式,而不是输入后已提交。不过谢谢你。 – Kelsey

+0

好的,只要记住,如果它是一个表单输入,那么我可以关闭JavaScript,只提交任何数字,它不会被阻止,除非你有PHP验证。 – Dan

相关问题