一種表單驗證方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及表單驗證技術(shù)領(lǐng)域,尤其涉及一種表單驗證方法。
【背景技術(shù)】
[0002]目前,對于表單數(shù)據(jù),一般需要技術(shù)人員根據(jù)需求對所有表單項進(jìn)行驗證,然后收集數(shù)據(jù),包裝數(shù)據(jù),再發(fā)送請求把數(shù)據(jù)提交到服務(wù)端收集保存。
[0003]采用上述方法對表單數(shù)據(jù)進(jìn)行驗證,具有以下缺點:工作內(nèi)容重復(fù)性高,針對不同的數(shù)據(jù)收集業(yè)務(wù)每次都需要單獨(dú)開發(fā)驗證方法,包括表單驗證,收集數(shù)據(jù),包裝數(shù)據(jù),發(fā)送請求把數(shù)據(jù)提交到服務(wù)器端收集保存,不僅開發(fā)任務(wù)量大,而且容易出錯,需要花費(fèi)大量時間測試代碼正確性,及其它BUG ;另外,由于習(xí)慣的特點,不同的開發(fā)人員編寫的代碼風(fēng)格規(guī)范也有較大的差異,從而增加了團(tuán)隊維護(hù)成本。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種表單驗證方法,從而解決現(xiàn)有技術(shù)中存在的前述問題。
[0005]為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0006]一種表單驗證方法,包括如下步驟:
[0007]S1,檢索頁面上所有名稱屬性為自定義表單的原始表單;
[0008]S2,根據(jù)所述原始表單創(chuàng)建對應(yīng)的自定義表單對像;
[0009]S3,根據(jù)所述原始表單的每個表單項元素,封裝成對應(yīng)的所述自定義表單對像的自定義子元素;
[0010]S4,將所有封裝好的所述自定義表單的自定義子元素存放到所述自定義表單對像的子元素數(shù)組列表里,組合成所述自定義表單對像;
[0011]S5,監(jiān)聽所述原始表單的提交事件,當(dāng)所述原始表單發(fā)生提交事件時,調(diào)用所述自定義表單對像的提交方法。
[0012]優(yōu)選地,S2中,所述自定義表單對像的數(shù)據(jù)結(jié)構(gòu)包括:自定義子元素、提交事件、驗證通過事件、提交成功事件和提交方法。
[0013]優(yōu)選地,S2和S3之間還包括步驟,遍歷所述原始表單中的所有子元素,查找表單類元素。
[0014]優(yōu)選地,所述表單類元素包括輸入、選擇和文本區(qū)域。
[0015]優(yōu)選地,S3中,所述封裝成對應(yīng)的所述自定義表單對像的自定義子元素中,如果所述表單類元素帶有自定義屬性,就把所述自定義屬性的值解析為驗證器,并附加封裝在所述自定義子元素中。
[0016]優(yōu)選地,S4中,所述組合成所述自定義表單對像中,所述自定義表單對像包括自定義表單對像和帶有驗證器的自定義子元素。
[0017]優(yōu)選地,所述自定義子元素的數(shù)據(jù)結(jié)構(gòu)包括:表單項名稱屬性、對應(yīng)原始表單項和驗證器列表。
[0018]優(yōu)選地,所述驗證器列表的結(jié)構(gòu)包括:驗證器名和錯誤提示信息。
[0019]優(yōu)選地,S5中,所述調(diào)用所述自定義表單對像的提交方法,采用如下方法進(jìn)行實施:
[0020]S501,判斷提交事件的屬性是否為空,如果是,則進(jìn)入下一個循環(huán);否則,調(diào)用該事件激發(fā)所述自定義表單對像的提交事件;
[0021 ] S502,遍歷所述自定義子元素,依據(jù)所述原始表單的元素獲取數(shù)據(jù)值,再將所述數(shù)據(jù)值與所述驗證器列表進(jìn)行驗證匹配,如果驗證失敗,則把驗證信息加入失敗列表,否則,把所述數(shù)據(jù)值存入數(shù)據(jù)列表;
[0022]S503,判斷所述失敗列表是否有失敗項,如果有失敗項,則通過失敗信息提示驗證失敗原因,并停止提交,否則,繼續(xù);
[0023]S504,通過驗證后,判斷通過驗證事件的屬性是否為空,如果為空,則進(jìn)入下一個循環(huán),否則,調(diào)用該事件激發(fā)所述自定義表單對像的驗證通過事件;
[0024]S505,異步請求服務(wù)器端,把所述數(shù)據(jù)列表發(fā)送給服務(wù)器端;
[0025]S506,服務(wù)器端返回結(jié)果,判斷提交成功事件的屬性是否為空,如果不為空,則調(diào)用該事件激發(fā)所述自定義表單對像的提交成功事件,否則,直接提示返回結(jié)果。
[0026]本發(fā)明的有益效果是:本發(fā)明實施例提供的表單驗證方法,通過簡單配置即實現(xiàn)了對各種表單項進(jìn)行驗證、收集數(shù)據(jù)、并通過異步請求把數(shù)據(jù)發(fā)送到服務(wù)器端的整個過程,簡化了開發(fā)及測試工作量,保持了代碼規(guī)范化和一致性,降低了出錯機(jī)率,提高了開發(fā)效率及代碼可靠性,從而降低了團(tuán)隊維護(hù)成本。
【附圖說明】
[0027]圖1是本發(fā)明實施例提供的表單驗證方法的流程示意圖。
【具體實施方式】
[0028]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的【具體實施方式】僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0029]如圖1所示,本發(fā)明實施例提供了一種表單驗證方法,包括如下步驟:
[0030]S1,檢索頁面上所有名稱屬性為自定義表單的原始表單;
[0031]S2,根據(jù)所述原始表單創(chuàng)建對應(yīng)的自定義表單對像;
[0032]S3,根據(jù)所述原始表單的每個表單項元素,封裝成對應(yīng)的所述自定義表單對像的自定義子元素;
[0033]S4,將所有封裝好的所述自定義表單的自定義子元素存放到所述自定義表單對像的子元素數(shù)組列表里,組合成所述自定義表單對像;
[0034]S5,監(jiān)聽所述原始表單的提交事件,當(dāng)所述原始表單發(fā)生提交事件時,調(diào)用所述自定義表單對像的提交方法。
[0035]自定義表單需要在原始表單發(fā)生提交事件時,阻止原始表單提交,并調(diào)用自身提交方法,才能實現(xiàn)對自身子元素進(jìn)行取值,驗證,錯誤反饋,及把收集的表單值異步發(fā)送到服務(wù)器的整個過程。
[0036]采用上述方法,可以通過自定義表單的簡單配置實現(xiàn)對各種表單項進(jìn)行驗證、收集數(shù)據(jù)、并通過異步請求把數(shù)據(jù)發(fā)送到服務(wù)器端的整個過程,簡化了開發(fā)及測試工作量,保持了代碼規(guī)范化和一致性,降低了出錯機(jī)率,提高了開發(fā)效率及代碼可靠性,從而降低了團(tuán)隊維護(hù)成本。
[0037]其中,S2中,所述自定義表單對像的數(shù)據(jù)結(jié)構(gòu)包括:自定義子元素、提交事件、驗證通過事件、提交成功事件和提交方法。
[0038]自定義子元素通過遍歷表單子元素得來,為提交時取值驗證使用。
[0039]提交事件、驗證通過事件、提交成功事件初次設(shè)置時為nul 1,用于在開發(fā)人員特殊情況下便于擴(kuò)展使用,例如:在表單驗證通過后,需要做某些操作再請求服務(wù)器,那么可以通過設(shè)置驗證通過事件去實現(xiàn)。
[0040]在本發(fā)明的一個優(yōu)選實施例中,S2和S3之間還包括步驟,遍歷所述原始表單中的所有子元素,查找表單類元素。
[0041]表單提交時,需要通過先后順序,對表單類元素進(jìn)行取值,驗證,最后把表單值發(fā)送到服務(wù)器端。所以通過遍歷原始表單子元素,能夠有序的得到所有表單類元素并封裝為自定義元素待提交時取值驗證。
[0042]在本發(fā)明的一個優(yōu)選實施例中,所述表單類元素包括輸入、選擇和文本區(qū)域。
[0043]如本領(lǐng)域技術(shù)人員可以理解的,本實施例中提供的表單類元素為目前常用的表單元素,因此,可以對應(yīng)原始表單的操作。
[0044]在本發(fā)明的一個優(yōu)選實施例中,S3中,所述封裝成對應(yīng)的所述自定義表單對像的自定義子元素中,如果所述表單類元素帶有自定義屬性,就把所述自定義屬性的值解析為驗證器,并附加封裝在所述自定義子元素中。
[0045]采用上述方法,如果有配置自定義屬性(valid),則代表該表單項是需要作驗證處理的,并且通過解析該自定義屬性值,得到驗證器名及錯誤提示信息,待提交時做驗證及錯誤反饋操作。
[0046]在本發(fā)明的一個優(yōu)選實施例中,S4中,所述組合成所述自定義表單對像中,所述自定義表單對像包括自定義表單對像和帶有驗證器的自定義子元素。
[0047]采用上述自定義表單對像,在表單提交操作時,能夠?qū)ο鄳?yīng)自定義表單子元素進(jìn)行遍歷取值,驗證。
[0048]在本發(fā)明的一個優(yōu)選實施例中,所述自定義子元素的數(shù)據(jù)結(jié)