本申請涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種表單校驗(yàn)處理方法和設(shè)備。
背景技術(shù):
表單是整個(gè)互聯(lián)網(wǎng)的輸入端,承擔(dān)著重大職責(zé),因而對輸入內(nèi)容的前端校驗(yàn)變得非常重要,具有保證數(shù)據(jù)安全性和對用戶進(jìn)行提醒的雙重作用,在實(shí)際表單開發(fā)中,表單校驗(yàn)占據(jù)了很大工作量。
復(fù)雜表單中,表單的結(jié)構(gòu)經(jīng)常會發(fā)生變化,引起表單中字段的增刪。例如,產(chǎn)品表單中,指定不同的產(chǎn)品類目,會導(dǎo)致產(chǎn)品屬性對應(yīng)字段的變化。為了處理這種變化,現(xiàn)有技術(shù)中必須先移除先前字段的校驗(yàn)然后移除html(Hypertext Markup Language,超文本標(biāo)記語言);在新html創(chuàng)建好后,再對其中的控件一一添加校驗(yàn)。
現(xiàn)有技術(shù)中提供了如下方法用于簡化表單校驗(yàn)過程:
方法一、Html5標(biāo)準(zhǔn)中只需要移除、增加表單控件,不需要做額外的代碼處理。
方法二、其他js validator,提供了針對單個(gè)表單控件的表單校驗(yàn)添加、移除方法。
針對于方法一,Html5標(biāo)準(zhǔn)局限性很多,例如瀏覽器兼容性支持、內(nèi)置校驗(yàn)規(guī)則過少,校驗(yàn)出錯(cuò)、文案配置使用不便等;而且,由于校驗(yàn)規(guī)則都已經(jīng)寫在html表單控件上,校驗(yàn)規(guī)則的復(fù)用變得困難。因?yàn)檫@些原因,Html5原生表單校驗(yàn)無法在大部分表單場景中使用。
針對于方法二,由于傳統(tǒng)js validator缺乏dom容器的校驗(yàn)機(jī)制,導(dǎo)致開發(fā)人員在程序中必須手動維護(hù)一些表單控件集及其配置文件,而且維護(hù)的過程中形成了css selector(或者表單控件dom)依賴,增加了程序代碼的復(fù)雜度。譬如,動態(tài)增加某一區(qū)域的表單字段時(shí),開發(fā)人員必須硬編碼獲取對應(yīng)的表 單控件dom,獲取其配置文件,然后一一為其添加校驗(yàn);整個(gè)過程非常繁瑣,費(fèi)時(shí)費(fèi)力。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)中存在如果下技術(shù)問題:
在復(fù)雜表單場景中,表單的字段常常根據(jù)頁面的結(jié)構(gòu)發(fā)生變化,無論增加或移除字段,都需要對每個(gè)字段增加或移除校驗(yàn)規(guī)則,在對增加或移除的字段進(jìn)行校驗(yàn)時(shí),都是對表單控件增加或移除校驗(yàn),而表單含有眾多表單控件,且是分散的,管理不便,對他們進(jìn)行校驗(yàn)添加/移除校驗(yàn),自然成本很高。
技術(shù)實(shí)現(xiàn)要素:
本申請實(shí)施例提供一種表單校驗(yàn)方法,用于實(shí)現(xiàn)表單校驗(yàn),包括:
獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;
判斷所述dom是否為表單控件;
當(dāng)判斷結(jié)果為是,獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
當(dāng)判斷結(jié)果為否,則判斷所述dom的孩子節(jié)點(diǎn)中是否包含表單控件;
如果所述dom的孩子節(jié)點(diǎn)中包含表單控件,則獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
其中,所述獲取所述表單控件的校驗(yàn)配置信息,包括:
通過對所述表單控件的dom元素特性掃描獲取所述表單控件的校驗(yàn)配置信息,或
掃描表單控件,當(dāng)表單控件與預(yù)設(shè)的匹配策略匹配時(shí),獲取所述表單控件的校驗(yàn)配置信息。
其中,所述校驗(yàn)處理包括:增加校驗(yàn)或移除校驗(yàn)。
本申請實(shí)施例還提供一種表單校驗(yàn)設(shè)備,包括:
獲取模塊,用于獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;
判斷模塊,用于判斷所述獲取模塊獲取的dom是否為表單控件;
校驗(yàn)?zāi)K,用于當(dāng)所述dom為表單控件時(shí),獲取表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
判斷模塊,還用于當(dāng)所述dom不是表單控件時(shí),判斷所述dom的孩子節(jié)點(diǎn)中是否包含表單控件;
校驗(yàn)?zāi)K,還用于當(dāng)所述dom的孩子節(jié)點(diǎn)中包含表單控件時(shí),獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
其中,所述校驗(yàn)?zāi)K,還用于:
通過對所述表單控件的dom元素特性掃描獲取所述表單控件的校驗(yàn)配置信息,或
掃描表單控件,當(dāng)表單控件與預(yù)設(shè)的匹配策略匹配時(shí),獲取所述表單控件的校驗(yàn)配置信息。
其中,所述校驗(yàn)處理包括:增加校驗(yàn)或移除校驗(yàn)。
本申請實(shí)施例具有以下優(yōu)點(diǎn):獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;判斷所述dom是否為表單控件;當(dāng)判斷結(jié)果為是,獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。當(dāng)頁面發(fā)生變化時(shí),只需要對該增加或移除的dom的進(jìn)行校驗(yàn)處理,簡化了表單開發(fā)過程,減少了代碼維護(hù)成本。
附圖說明
為了更清楚地說明本申請或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對本申請或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實(shí)施例中一種表單校驗(yàn)處理方法的流程圖;
圖2為本申請實(shí)施例中一種表單增加校驗(yàn)方法的流程圖;
圖3為本申請實(shí)施例中一種表單增加校驗(yàn)方法的流程示意圖;
圖4為本申請實(shí)施例中一種表單校驗(yàn)處理設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本申請的實(shí)施例包括:獲取需要校驗(yàn)的文檔對象模型dom;判斷所述dom 是否為表單控件;當(dāng)判斷結(jié)果為是,獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
下面將結(jié)合本申請中的附圖,對本申請中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例是本申請的一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
如圖1所示,為本申請實(shí)施例提供的一種表單校驗(yàn)處理方法,具體包括以下步驟:
步驟S101、獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;
當(dāng)頁面結(jié)構(gòu)發(fā)生變化時(shí),如果增加了某個(gè)dom,需要對這個(gè)dom增加校驗(yàn);如果移除了某個(gè)dom,需要對這個(gè)dom移除校驗(yàn)。
需要進(jìn)行校驗(yàn)處理的dom,即為需要增加或移除校驗(yàn)的dom。
步驟S102、判斷所述dom是否為表單控件。
通過判斷所述dom的元素類型是否為input或select或textarea或file等表單控件類型,判斷所述dom是否為表單控件。
如果判斷結(jié)果為是,則執(zhí)行步驟S103;
如果判斷結(jié)果為否,則執(zhí)行步驟S104。
步驟S103、獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理,結(jié)束所述流程。
其中,獲取所述表單控件的校驗(yàn)配置信息,包括:
方式一、通過對所述表單控件的dom元素特性掃描獲取所述表單控件的校驗(yàn)配置信息。例如,如果掃描到<input required maxlength=“128”/>,便可以獲得此表單控件的校驗(yàn)配置規(guī)則為:必填且字符長度最多為128,此種方式兼容,HTML5表單控件校驗(yàn)規(guī)則聲明方法。
方式二、掃描表單控件,當(dāng)表單控件與預(yù)設(shè)的匹配策略匹配時(shí),獲取所述表單控件的校驗(yàn)配置信息。
在進(jìn)行匹配之前,已經(jīng)預(yù)設(shè)了匹配策略及與匹配策略匹配的所有表單控件校驗(yàn)配置池,例如,匹配策略可以為dom屬性、特性等,當(dāng)掃描表單控件 時(shí),如果該表單控件的dom屬性、特性等與匹配策略相匹配,則獲取該表單控件的校驗(yàn)配置信息。
方式三、通過對所述表單控件的dom元素特性掃描獲取所述表單控件的校驗(yàn)配置信息,以及掃描表單控件,當(dāng)表單控件與預(yù)設(shè)的匹配策略匹配時(shí),獲取所述表單控件的校驗(yàn)配置信息共同獲取校驗(yàn)配置信息。具體地,可以通過方式一獲取部分校驗(yàn)配置信息,并通過方式二獲取部分校驗(yàn)配置信息,或者預(yù)先設(shè)置優(yōu)先級,根據(jù)優(yōu)先級獲取方式一或方式二中的校驗(yàn)配置信息。
根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理,具體為:表單校驗(yàn)處理設(shè)備維護(hù)了進(jìn)行過校驗(yàn)處理的表單控件與對應(yīng)的校驗(yàn)配置信息的映射關(guān)系,當(dāng)獲得表單控件的校驗(yàn)配置信息后,查詢所述映射關(guān)系中是否存在所述表單控件與所述校驗(yàn)配置信息的對應(yīng)關(guān)系,若存在,則已經(jīng)存在所述表單控件的校驗(yàn),需要將所述表單控件的校驗(yàn)移除;若不存在,則不存在所述表單控件的校驗(yàn),需要根據(jù)所述校驗(yàn)配置信息添加所述表單控件的校驗(yàn)。
步驟S104、判斷所述dom的孩子節(jié)點(diǎn)中是否包含表單控件;
當(dāng)所述dom不是表單控件時(shí),則認(rèn)為此dom為容器,對該dom容器的所有孩子節(jié)點(diǎn)進(jìn)行掃描,判斷是否包含表單控件。其中,判斷是否包含表單控件,可以通過查找孩子節(jié)點(diǎn)中是否包含input或select或textarea或file等表單控件類型的表單控件,判斷是否包含表單控件。
步驟S105、如果所述dom的孩子節(jié)點(diǎn)中包含表單控件,則獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
通過對所述表單控件的dom元素特性掃描獲取所述表單控件的校驗(yàn)配置信息,或掃描表單控件,當(dāng)表單控件與預(yù)設(shè)的匹配策略匹配時(shí),獲取所述表單控件的校驗(yàn)配置信息。
具體的獲取所述表單控件的校驗(yàn)配置信息的方式以及根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理如步驟S103,此處不再贅述。
本申請實(shí)施例具有以下優(yōu)點(diǎn):獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;判斷所述dom是否為表單控件;當(dāng)判斷結(jié)果為是,獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。當(dāng)頁 面發(fā)生變化時(shí),只需要對該增加或移除的dom的進(jìn)行校驗(yàn)處理,簡化了表單開發(fā)過程,減少了代碼維護(hù)成本。
下面結(jié)合具體的應(yīng)用場景對上述實(shí)施例進(jìn)行詳細(xì)的說明,本實(shí)施例以物流選擇表單為例進(jìn)行說明,當(dāng)物流由國際快遞切換為海運(yùn)拼箱時(shí),需要對國際快遞容器移除校驗(yàn),對海運(yùn)拼箱容器添加校驗(yàn)。
如圖2所示,為對國際快遞移除校驗(yàn)的過程,包括以下步驟:
步驟S201、獲得國際快遞條件下的需要進(jìn)行校驗(yàn)處理的dom。
步驟S202、判斷所述dom的元素類型是否為input或select或textarea或file等表單控件類型。
具體地,掃描國際快遞條件下的所有dom的input,select,textarea標(biāo)簽,判斷所述dom是否為input或select或textarea或file等表單控件類型。
步驟S203、當(dāng)所述dom的元素類型不是input或select或textarea或file等表單控件類型時(shí),對所述dom的所有孩子節(jié)點(diǎn)進(jìn)行掃描。
具體地,掃描所述dom的孩子節(jié)點(diǎn)的input,select,textarea標(biāo)簽。
步驟S204、判斷所有的孩子節(jié)點(diǎn)中是否包含input或select或textarea或file等表單控件類型的表單控件。
步驟S205、對每一個(gè)表單控件的dom元素特性掃描,獲取所述表單控件的校驗(yàn)配置信息。
步驟S206、根據(jù)所述校驗(yàn)配置信息對所述dom移除校驗(yàn)。
具體地,獲得所述表單控件的校驗(yàn)配置信息后,查詢映射關(guān)系中存在所述表單控件以及所述校驗(yàn)配置信息的對應(yīng)關(guān)系,移除所述dom的校驗(yàn)。
本申請實(shí)施例具有以下優(yōu)點(diǎn):獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;判斷所述dom是否為表單控件;當(dāng)判斷結(jié)果為是,獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。當(dāng)頁面發(fā)生變化時(shí),只需要對該增加或移除的dom的進(jìn)行校驗(yàn)處理,簡化了表單開發(fā)過程,減少了代碼維護(hù)成本。
如圖3所示,為對海運(yùn)拼箱增加校驗(yàn)的過程,包括以下步驟:
步驟S301、獲得海運(yùn)拼箱條件下的需要進(jìn)行校驗(yàn)處理的dom。
步驟S302-S304與步驟S202-S204相同,此處不再贅述。
步驟S305、預(yù)設(shè)匹配策略及與匹配策略匹配的所有表單控件校驗(yàn)配置池。
匹配策略可以為dom屬性、特性等。
需要注意的是,步驟S305與前述的S301-S304之間不存在先后關(guān)系。
步驟S306、當(dāng)判斷結(jié)果為是,掃描表單控件時(shí),如果該表單控件的dom屬性、特性等與匹配策略相匹配,則獲取該表單控件的校驗(yàn)配置池中的校驗(yàn)配置信息。
步驟S307、根據(jù)所述校驗(yàn)配置信息對所述dom增加校驗(yàn)。
具體地,獲得所述表單控件的校驗(yàn)配置信息后,查詢映射關(guān)系中不存在所述表單控件以及所述校驗(yàn)配置信息的對應(yīng)關(guān)系,根據(jù)所述校驗(yàn)配置信息,增加所述dom的校驗(yàn)。
本申請實(shí)施例具有以下優(yōu)點(diǎn):獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;判斷所述dom是否為表單控件;當(dāng)判斷結(jié)果為是,獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。當(dāng)頁面發(fā)生變化時(shí),只需要對該增加或移除的dom的進(jìn)行校驗(yàn)處理,簡化了表單開發(fā)過程,減少了代碼維護(hù)成本。
本申請實(shí)施例提供一種校驗(yàn)處理設(shè)備,如圖4所示,包括:
獲取模塊41,用于獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom。
所述校驗(yàn)處理包括:增加校驗(yàn)或移除校驗(yàn)。
判斷模塊42,用于判斷所述獲取模塊獲取的dom是否為表單控件;
校驗(yàn)?zāi)K43,用于當(dāng)所述dom為表單控件時(shí),獲取表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
校驗(yàn)?zāi)K42,通過對所述表單控件的dom元素特性掃描獲取所述表單控件的校驗(yàn)配置信息,和/或
掃描表單控件,當(dāng)表單控件與預(yù)設(shè)的匹配策略匹配時(shí),獲取所述表單控件的校驗(yàn)配置信息。
判斷模塊42,用于當(dāng)所述dom不是表單控件時(shí),判斷所述dom的孩子節(jié)點(diǎn)中是否包含表單控件。
校驗(yàn)?zāi)K43,用于當(dāng)所述dom的孩子節(jié)點(diǎn)中包含表單控件時(shí),獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。
校驗(yàn)?zāi)K43維護(hù)了進(jìn)行過校驗(yàn)處理的表單控件與對應(yīng)的校驗(yàn)配置信息的映射關(guān)系,當(dāng)獲得表單控件的校驗(yàn)配置信息后,查詢所述映射關(guān)系中是否存在所述表單控件與所述校驗(yàn)配置信息的對應(yīng)關(guān)系,若存在,則已經(jīng)存在所述表單控件的校驗(yàn),需要將所述表單控件的校驗(yàn)移除;若不存在,則不存在所述表單控件的校驗(yàn),需要根據(jù)所述校驗(yàn)配置信息添加所述表單控件的校驗(yàn)。
本申請實(shí)施例具有以下優(yōu)點(diǎn):獲取需要進(jìn)行校驗(yàn)處理的文檔對象模型dom;判斷所述dom是否為表單控件;當(dāng)判斷結(jié)果為是,獲取所述表單控件的校驗(yàn)配置信息,并根據(jù)所述校驗(yàn)配置信息對所述dom進(jìn)行校驗(yàn)處理。當(dāng)頁面發(fā)生變化時(shí),只需要對該增加或移除的dom的進(jìn)行校驗(yàn)處理,簡化了表單開發(fā)過程,減少了代碼維護(hù)成本。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個(gè)實(shí)施例所述的方法。
以上所述僅是本申請的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本申請的保護(hù)范圍。