ONLYOFFICE 的表單復(fù)雜字段開發(fā)詳解
ONLYOFFICE 的表單復(fù)雜字段開發(fā)詳解
上一回圖文講到了表單文件的入門使用:
一種新的表單制作表單填寫高效解決方案
展示了使用正則表達(dá)式來設(shè)計開發(fā)邏輯復(fù)雜的填表域空格的功能,但是,正則表達(dá)式是一種非常難學(xué)的晦澀難懂的語言,雖然掌握后是屠龍寶刀,正則表達(dá)式不是誰都可以學(xué)得會的……

那么,不用正則表達(dá)式,能否設(shè)計開發(fā)上一篇圖文里面的復(fù)雜功能呢?比如那個身份證號碼輸入驗證功能?答案是肯定的,那就是使用表單復(fù)雜字段。

如上圖菜單中最右側(cè)的這個按鈕復(fù)合字段
,復(fù)合字段的屬性如下圖所示

復(fù)合字段里面再插入多個各種不同類型的表單域,正好適合于身份證或手機(jī)號的不同的位域的具體設(shè)計定義,比如我們都知道一個人的出生日期是身份證號的第 7 位到第 14 位,因此在我這里設(shè)計的身份證號的復(fù)合字段的占位符為空,由各個位域的字段的占位符來定義。
字段關(guān)聯(lián)
密鑰與關(guān)聯(lián)字段:在上側(cè)的輸入框輸入身份證,就會在下側(cè)的輸出框自動計算顯示輸出你的身份證號碼,在上側(cè)的復(fù)合字段的屬性密鑰里定義一個名稱,我這里輸入為“身份證號
”,在下一行的復(fù)合字段的屬性密鑰的下拉列表中,選擇上面為輸入框定義的密鑰“身份證號
”,就可以完成字段關(guān)聯(lián)

這樣在輸出的可填寫表單.oform
文件中,你在輸入框的輸入會直接自動的同步輸出到輸出框中。

在截圖這個表單文件中同樣操作了手機(jī)號,手機(jī)號輸入后同時輸出來。
地址碼字段
身份證前 6 位是屬地戶籍信息,省、縣(市)、鄉(xiāng)(區(qū)),比如我們北京的都是110
開頭,然后東城、西城、海淀、朝陽……等分配接下來的三位103
、104
、105
…………其他城市有其他的代碼,這里就不列出具體的行政區(qū)劃代碼列表了,這 6 位都可能會出現(xiàn)從 0 到 9 的 10 個阿拉伯?dāng)?shù)字字符,因此,這個字段的表單文本規(guī)則很簡單:地址碼字段屬性的格式
下拉框中選擇數(shù)字即可限定只能輸入阿拉伯?dāng)?shù)字字符,并且勾選字?jǐn)?shù)限制
設(shè)為 6 即可,如下圖所示

占位符就是沒有輸入的狀態(tài)下的顯示內(nèi)容,習(xí)慣用 0 填充,不設(shè)置占位符的話,空白狀態(tài)的地址碼字段的寬度就會縮地很短,填表時隨著輸入而動態(tài)的加寬,可能會把本行文本頂出本行而自動換行,自動換行有可能導(dǎo)致下面各行連鎖下移一行,引發(fā)格式災(zāi)變,因此,占位符預(yù)先占取了位置就可以方便設(shè)計表單版式了,當(dāng)然還有另一種方式就是截圖中文字字段屬性的字符組合
復(fù)選框,勾選后可以在單元格寬度
欄內(nèi)精確定義每一個字符的寬度。
出生日期碼字段
年月日總共有 8 位數(shù)字:
年份前兩位
只能是19
或者20
,畢竟不可能有 18 幾幾年出生現(xiàn)在還健在的人,那都得 120 多歲了,所以這里使用候選列表
表單域

值設(shè)置處僅需要添加19
和20
兩個字符串即可,占位符就不要置 0 了,而從候選列表里面選一個作為占位符,最終填表時效果如下,只能從下拉框中選擇一個

年份后兩位
雖然人類活不到 120 多歲,但是百歲老人還是不罕見,最著名的過百歲才逝世的老人有千古功臣張學(xué)良將軍

所以年份的后兩位的字符串的可能性實在是太多,就不用候選列表
表單域,還是使用普通的文本域如下:

格式
選擇數(shù)字,字?jǐn)?shù)限制
為 2,字符組合
里將單元格寬度``精確
的調(diào)整至0.26厘米
月兩位
1 年只有 12 個月,所以選擇使用候選列表
這個表單域,值設(shè)置
里面添加從01
到12
這 12 個候選項,占位符選擇 01:

日兩位
每個月的天數(shù)不太一樣,但最多也不過 31 天,所以也選擇使用候選列表
這個表單域:

至于 2 月份只能留給填表人自己負(fù)責(zé)不去選擇31
、30
、29
這幾個數(shù)字了
順序碼
出生日期之后的 3 位數(shù)字是順序碼,是給同地址碼同出生日期碼的人編定的順序號,其中奇數(shù)分配給男性,偶數(shù)分配給女性,因此設(shè)計如下:

校驗碼
最后一位是校驗碼,校驗碼為一位數(shù),但如果最后采用校驗碼系統(tǒng)計算的校驗碼是“10
”,礙于身份證號碼為 18 位的規(guī)定,則以“X
”代替校驗碼“10
”,因此,校驗碼有 11 種可能,分別是從0
到9
,外加一個“X
”,這里并不復(fù)制校驗碼真實的計算方法,就只是禁止輸入校驗碼之外的字符,比如 abcde……之類的英文字符,所以如下設(shè)計:

字段的格式
選擇無,也就是純文字,在可用符號
里直接輸入所有這些可能出現(xiàn)的 11 個字符,從0
到X
,限制 1 位數(shù)字
這樣就能通過復(fù)雜字段來嚴(yán)格限制并校驗身份證號碼的輸入了。
固定字段
很多時候填表內(nèi)容中都會有固定出現(xiàn)的字段,如下圖所示,比如電子郵箱地址里面的@
符號,比如社交網(wǎng)站個人主頁的https://blog.csdn.net/
,這些字段可以直接在復(fù)合字段中輸入,然后在需要填表人填寫的位置插入具體的表單域:

然后填表人只需要輸入自己的用戶名,不用輸入完整的地址。
固定字段可以位于復(fù)合字段的開頭、中間以及末尾的任意位置,例如下圖所示,電話號碼各個數(shù)字段中間的-
字符,方便人們讀寫電話號碼,國內(nèi)的手機(jī)號碼一般是 11 位,正確的讀寫斷句應(yīng)該是三位四位四位的讀法,對應(yīng)的在各段之間插入一個-
字符,這是有意義的,如下
掩碼規(guī)則
在普通文字字段
的格式
下拉框中還可以選擇使用任意掩碼
,這種掩碼技術(shù)比正則表達(dá)式稍微簡單易學(xué)一些,舉例如下:

國內(nèi)的手機(jī)號的前三位一般是手機(jī)服務(wù)運營商的的號段位,比如圖中的135
是移不動的的號段,所有號段的第 1 位都是1
,第 2 和第 3 位則可能是任意阿拉伯?dāng)?shù)字,所以這里設(shè)定掩碼的規(guī)則是 199,這樣就完美的表達(dá)了如此規(guī)則

手機(jī)號的中間 4 位和后 4 位都是阿拉伯?dāng)?shù)字,因此都開啟字?jǐn)?shù)限制
設(shè)為 4,并開啟字符組合
色彩、字體、雜項排版
如上圖所示,可以開啟邊框顏色和背景顏色,標(biāo)準(zhǔn)的顏色板功能,如下圖所示

其它的排版可以選擇相關(guān)字段后,就像正文一樣,應(yīng)用各種排版,如上述各截圖,可以設(shè)置文字的字體、顏色、斜體、加粗、字號、等等,甚至可以放置在表格里面,用表格來精確調(diào)整位置
體驗
上面展示的實例的可填寫的表單在這里
復(fù)雜字段.oform[1]
在你輸入手機(jī)號碼之后它能自動的計算出來你的手機(jī)號碼:

參考資料
[1]?復(fù)雜字段.oform: https://personal.onlyoffice.com/products/files/doceditor?fileid=5154256&doc=Y3l6ZGkwSUhzUy9yTVdBbjN2UnN0NEIxY1d1cjQzeDJ4TWVMbnFWaUluUT0_NTE1NDI1Ng
[2] ......[3] 表單創(chuàng)建工具中復(fù)雜字段介紹和使用指南: https://www.onlyoffice.com/blog/zh-hans/2022/10/what-is-a-complex-field/
[4]?ONLYOFFICE 表單字段類型及配置: https://test-helpcenter.onlyoffice.com/ONLYOFFICE-Editors/ONLYOFFICE-Document-Editor/UsageInstructions/CreateFillableForms.aspx