# 輸入數字限制為小數點後兩位 ###### tags: `網頁程式` 輸入框要限制為小數點後兩位,很簡單使用 `toFixed(n)` 即可使數字四捨五入到小數點後 n 位。 但若直接在 onchange 時使用`parseFloat(value).toFixed(2)`修改,就會發現只能輸入個位數,想輸入十位數如 12 就會變成 1.20,這是因為修改太過及時了。想解決這個問題有兩個方法 ## 法一:unfocus 時再進行 format ```htmlmixed <input type="number" onblue="updateValue" /> ``` ```javascript const updateValue = (event) => { this.value = parseFloat(this.value).toFixed(2); }; ``` ## 法二:使用 regex 判斷不符合條件時才進行 format ```javascript <input type="number" onchange="updateValue" /> const updateValue = (value) => { const regex = new RegExp("^[0-9]+(.[0-9]{0,2})?$", 'g'); if(!regex.test(value)){ this.value = parseFloat(this.value).toFixed(2); } }; ``` ps:在 javascript 中使用 ReqExp patten 做好用`/`包住而不是`"`,詳細原因可[看這](https://hackmd.io/@boring/B1Gb8pUJn) ### 相關連結 [Allow 2 decimal places in <input type="number"> - stack overflow](https://stackoverflow.com/a/46203928/19304838)