使用HTML5的表單驗(yàn)證的簡(jiǎn)單示例

HTML5對(duì)表單元素提供了patern屬性,它接受一個(gè)正則表達(dá)式。表單提交時(shí)這個(gè)正則表達(dá)式會(huì)被用于驗(yàn)證表單內(nèi)非空的值,如果控件的值不匹配這個(gè)正則表達(dá)就會(huì)彈出提示框,并阻止表達(dá)提交。提示框內(nèi)的文字可以使用setCustomValidity方法來(lái)自定義。
比如下面這個(gè)表單內(nèi),文本框只接受大陸的手機(jī)號(hào),輸入其它東西就無(wú)法提交
運(yùn)行
- <!DOCTYPE html>
- <form>
- <input id="text" pattern="^1[3-9]\d{9}$" required />
- <input id="button" type="submit" />
- </form>
注意只有非空的表單才會(huì)使用正則驗(yàn)證,如果什么都不輸入的話,pattern不會(huì)被使用,所以還需要required協(xié)助。但是這個(gè)代碼彈出的提示是這樣的:
這樣的提示文字只有猴子看得懂!所以我們還需要更友好的提示文字,使用setCustomValidity方法來(lái)定義。
運(yùn)行
- <!DOCTYPE html>
- <form>
- <input id="text" pattern="^1[3-9]\d{9}$" required />
- <input id="button" type="submit" />
- </form>
- <script>
- text.oninput=function(){
- text.setCustomValidity("");
- };
- text.oninvalid=function(){
- text.setCustomValidity("請(qǐng)不要輸入火星的手機(jī)號(hào)好嗎?");
- };
- </script>
invalid事件會(huì)在表單submit事件之前觸發(fā),如果驗(yàn)證不通過(guò)的話就不會(huì)觸發(fā)表單的submit。而提交時(shí)會(huì)先驗(yàn)證所有表單元素是值是否有效。除了提交外還可以手動(dòng)調(diào)用checkValidity方法來(lái)執(zhí)行驗(yàn)證。
上面的例子中我直接對(duì)控件設(shè)置固定的提示其實(shí)不太好,有時(shí)候可能需要更詳細(xì)的提示信息,比如空的時(shí)候提示為空、太長(zhǎng)的時(shí)候提示太長(zhǎng)、非數(shù)字的時(shí)候提示非數(shù)字等。這些動(dòng)作可以通過(guò)程序驗(yàn)證后動(dòng)態(tài)地setCustomValidity來(lái)實(shí)現(xiàn)。
其實(shí)我覺(jué)得HTML5的這套API設(shè)計(jì)的很糟糕,雖然可以滿足基本需求,但還真不太實(shí)用。
手機(jī)頁(yè)面中表單提交用JavaScript驗(yàn)證信息 會(huì)彈出窗口,用戶體驗(yàn)極差,所以再給出一個(gè)手機(jī)端用HTML5的屬性來(lái)驗(yàn)證的示例:
- <input id="name" name="name" placeholder="name" required="" tabindex="1" type="text">
- <input id="email" name="email" placeholder="telephone" required="" tabindex="2" type="text" pattern="(^(\d{3,4}-)?\d{7,8})$|^(13|15|18|14)\d{9}$">
- <input id="subject" name="subject" placeholder="example@domain.com" required="" tabindex="2" type="text">
- // 主要用了HTML的一下屬性
- // 1.placeholder 提供可描述輸入字段預(yù)期值的提示信息。 該提示會(huì)在輸入字段為空時(shí)顯示,并會(huì)在字段獲
- //得焦點(diǎn)時(shí)消失
- //2.required 屬性規(guī)定必需在提交之前填寫輸入字段
- //3.pattern 是正則表達(dá)式, 里面可以直接填寫正則表達(dá)式
相關(guān)文章
html5自帶表單驗(yàn)證體驗(yàn)優(yōu)化及提示氣泡修改功能
很多朋友進(jìn)行表單驗(yàn)證的時(shí)候,都是自己用jquery或者js手工驗(yàn)證,或者用一下jquery插件進(jìn)行驗(yàn)證。感覺(jué)html5自帶驗(yàn)證不是很好用,下面小編給大家分享使用純html5編寫的一個(gè)表2017-09-12HTML5 表單驗(yàn)證失敗的提示語(yǔ)問(wèn)題
這篇文章主要介紹了HTML5 表單驗(yàn)證失敗的提示語(yǔ)問(wèn)題的相關(guān)資料,需要的朋友可以參考下2017-07-13- 這篇文章主要介紹了使用HTML5和CSS3表單驗(yàn)證功能,需要的朋友可以參考下2017-05-05
HTML5實(shí)現(xiàn)表單自動(dòng)驗(yàn)證功能實(shí)例代碼
在HTML5 中,在增加了大量的表單元素與屬性的同時(shí),也增加了大量在提交時(shí)對(duì)表單與表單內(nèi)新增元素進(jìn)行內(nèi)容有效性驗(yàn)證的功能,接下來(lái)我們來(lái)講一下自動(dòng)驗(yàn)證,需要的朋友參考2017-01-11- 表單驗(yàn)證就是在表單提交服務(wù)器前對(duì)其進(jìn)行一系列的檢查并通知用戶糾正錯(cuò)誤,本篇文章主要介紹了詳解HTML5中表單驗(yàn)證的8種方法,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-19
HTML5 form標(biāo)簽之解放表單驗(yàn)證、增加文件上傳、集成拖放的使用方法
本篇文章小編為大家介紹,HTML5 form標(biāo)簽之解放表單驗(yàn)證、增加文件上傳、集成拖放的使用方法。需要的朋友參考下2013-04-24HTML5表單驗(yàn)證特性(知識(shí)點(diǎn)小結(jié))
這篇文章主要介紹了HTML5表單驗(yàn)證特性的一些知識(shí)點(diǎn),本文通過(guò)實(shí)例代碼截圖的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-10