微信小程式input標籤正則初體驗

阿哲發表於2018-08-17

開篇廢話

在開發過程中經常遇到這樣的需求:使用者只能輸入數字並且只保留小數點兩位。雖然我們可以在提交表單的時候進行驗證,但是體驗不是很好。下面我主要使用了小程式input標籤的bindinput方法對輸入的值進行監聽,然後進行正則匹配。

1. input標籤

微信小程式input標籤自帶type=digit屬性,可以調起帶有小數點的數字鍵盤,maxlength屬性可以控制我們輸入字元的個數,然後我們給input標籤繫結bindinput方法。

<input type="digit" bindinput="regInput" maxlength="15"/>

2. 繫結監聽事件

bindinput方法可以監聽到當前輸入框的值,類似於onchange事件,但不太一樣。通過e.detail.value可以獲取到input的值,return返回的字串可以替換掉輸入的字串。

3. 正則匹配

匹配正則通過則返回所有字元,不通過則去掉最後一個不匹配的字元返回。

/*正則匹配*/
regInput(e){
    if(/^(d?)+(.d{0,2})?$/.test(e.detail.value)){
        return e.detail.value;
    }else {
        return e.detail.value.substring(0,e.detail.value.length-1);
    }
}

結束

這個正規表示式不是很完美,歡迎一起來優化。

相關文章