es6 封裝乙個基礎的表單驗證

2022-07-25 03:39:06 字數 2703 閱讀 6499

設計乙個通用的表單驗證,如果後期表單中新增了更多的需求,不需要更改之前的**邏輯,最好不要改之前的**,需要加什麼直接加就好了。 

此表單驗證最好返回乙個函式,在api設計這塊我選擇在每個表單項上新增valid屬性,在驗證中通過檢視是否有valid屬性、valid屬性的內容來獲取需要驗證的表單,並且返回驗證的結果。

該分析的也分析了,那就開始幹吧!!!

由於重點是表單驗證方面,html和css我就能簡則簡

<

form

id="login-form"

>

<

p id

="errormsg"

style

="color:red"

>

p>

<

input

type

="text"

name

="username"

id="username"

>

<

input

type

="password"

name

="password"

id="password"

>

<

input

type

="button"

value

="提交"

id="btn"

>

form

>

按照之前的設計思路,是乙個函式,返回驗證表單的錯誤資訊,那麼引數肯定為要驗證的表單

function formcheck(form)
由於我們是通過 表單中我們自己加的屬性來判斷是否需要驗證,那麼我們現在在表單中加入這個屬性,假設現在username和password需要驗證不能為空,username為手機號格式。

valid="preset,phone">

valid="preset">

接著我們上面的formcheck

function formcheck(form) 

let checkresult = //儲存驗證結果的陣列

let elements = form.elements //表單元素集合

array.from(elements).filter(ele => ).map(item =>

})if (errorarr.length) )}})

return checkresult //返回該陣列

}

上面的函式中用到了rules,這是我們自己定義的乙個驗證規則,為乙個物件

const rules =}},

phone (val) }}

}

至此,乙個表單驗證的formcheck 就完成了,呼叫試一試:

<

form

id="login-form"

>

<

p id

="errormsg"

style

="color:red"

>

p>

<

input

type

="text"

name

="username"

id="username"

valid

="require,phone"

>

<

input

type

="password"

name

="password"

id="password"

valid

="require"

>

<

input

type

="button"

value

="提交"

id="btn"

>

form

>

<

script

>

let form

=document.getelementbyid(

'login-form')

let btn

=document.getelementbyid(

'btn')

btn.onclick

=()

=>

script

>

什麼都不填直接點選btn結果為:

username隨便輸乙個數字,點選btn結果為:

返回的結果裡,dom元素也有,提示資訊也有,我們取到想要的值就可以愉快的進行判斷了。

以後如果需要加乙個郵箱的input,valid='email'啥的,  我們直接在rules定義好email這個驗證規則,然後就可以直接在input的valid屬性上加上email,別的完全不用改。是不是很方便呀

如果有多個valid,別忘了用逗號分隔哈,因為我們split是根據逗號來的。

封裝乙個表單驗證類

封裝乙個表單驗證類 中文驗證 郵箱驗證 號碼 手機 qq 身份證 由字母 數字 下劃線組成,不能以數字開頭 header content type text html charset utf 8 class form x u return preg match reg,str 郵箱驗證 引數 ema...

2 2 封裝乙個獲取元素的樣式的方法

一 設定和獲取行內的樣式 box div 設給元素置樣式 注意這設定的是行內樣式 var obox document.getelementbyid box obox.style.width 200px obox.style.height 200px obox.style.background red...

IO4 1封裝乙個刪除檔案函式

需求如題。首先,我們需要建立乙個檔案 filename path py.txt try f open filename path,w 寫入模式,會沖刷掉檔案內容 print f.write 作者,黃蓉 f.close except 異常處理 print s檔案找不到 filename path 成功...