2014-04-10 118 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

相關問題