input 的 pattern 驗證表單


pattern 用於定義驗證輸入正則表達式

pattern 屬性適用於以下 <input> 類型:text, search, url, telephone, email 以及 password

 

需要注意的是:input的正則表達式是不需要使用 \ 來轉義特殊字符的,這和js里面的正則表達式有所區別,轉義了反而會報錯

 

可以使用 title 屬性來描述正則表達式,這樣在瀏覽器驗證表單是就會按title描述來提示錯誤消息

 

使用title雖然會有提示,但提示語前面會附加 “請匹配要求的格式”。如果瀏覽器是中文,提示語是英文,就會感覺怪怪的

這時我們可以通過setCustomValidity方法來自定義提示信息,更准確的提示給用戶,但因為設置了setCustomValidity后如果不手動取消,表單就會一直提示有錯誤消息而無法提交,所以需要寫一段js代碼

<script type="text/javascript">
    function vali(obj) {
        if (obj.validity.patternMismatch === true) {
            obj.setCustomValidity($(obj).prop('title'));
        } else {
            obj.setCustomValidity('');
        }
    }
</script>

<input type="text" pattern="[a-zA-Z]+" oninvalid="vali(this);" />

上面這個方法還有一個問題,因為調用vali()函數是在oninvalid里面調用的,而oninvalid是在onsubmit中被瀏覽器調用的

所以執行vali()函數后submit不會再執行了,這樣即使vali()里面調用了obj.setCustomValidity('');清理了錯誤消息,表單也還是無法提交,還需要點擊一次提交按鈕

所以,看具體情況,也可以使用oninput代替oninvalid,或者就只使用title屬性,如果瀏覽器語言和提示信息語言一致的話


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM