# 輸入數字限制為小數點後兩位
###### 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)