欢迎光临散文网 会员登陆 & 注册

ONLYOFFICE 的表单复杂字段开发详解

2022-12-11 01:56 作者:王毙立  | 我要投稿

ONLYOFFICE 的表单复杂字段开发详解

上一回图文讲到了表单文件的入门使用:

一种新的表单制作表单填写高效解决方案

展示了使用正则表达式来设计开发逻辑复杂的填表域空格的功能,但是,正则表达式是一种非常难学的晦涩难懂的语言,虽然掌握后是屠龙宝刀,正则表达式不是谁都可以学得会的……

那么,不用正则表达式,能否设计开发上一篇图文里面的复杂功能呢?比如那个身份证号码输入验证功能?答案是肯定的,那就是使用表单复杂字段。

如上图菜单中最右侧的这个按钮复合字段,复合字段的属性如下图所示

复合字段里面再插入多个各种不同类型的表单域,正好适合于身份证或手机号的不同的位域的具体设计定义,比如我们都知道一个人的出生日期是身份证号的第 7 位到第 14 位,因此在我这里设计的身份证号的复合字段的占位符为空,由各个位域的字段的占位符来定义。

字段关联

密钥与关联字段:在上侧的输入框输入身份证,就会在下侧的输出框自动计算显示输出你的身份证号码,在上侧的复合字段的属性密钥里定义一个名称,我这里输入为“身份证号”,在下一行的复合字段的属性密钥的下拉列表中,选择上面为输入框定义的密钥“身份证号”,就可以完成字段关联

这样在输出的可填写表单.oform文件中,你在输入框的输入会直接自动的同步输出到输出框中。

在截图这个表单文件中同样操作了手机号,手机号输入后同时输出来。

地址码字段

身份证前 6 位是属地户籍信息,省、县(市)、乡(区),比如我们北京的都是110开头,然后东城、西城、海淀、朝阳……等分配接下来的三位103104105…………其他城市有其他的代码,这里就不列出具体的行政区划代码列表了,这 6 位都可能会出现从 0 到 9 的 10 个阿拉伯数字字符,因此,这个字段的表单文本规则很简单:地址码字段属性的格式下拉框中选择数字即可限定只能输入阿拉伯数字字符,并且勾选字数限制设为 6 即可,如下图所示

占位符就是没有输入的状态下的显示内容,习惯用 0 填充,不设置占位符的话,空白状态的地址码字段的宽度就会缩地很短,填表时随着输入而动态的加宽,可能会把本行文本顶出本行而自动换行,自动换行有可能导致下面各行连锁下移一行,引发格式灾变,因此,占位符预先占取了位置就可以方便设计表单版式了,当然还有另一种方式就是截图中文字字段属性的字符组合复选框,勾选后可以在单元格宽度栏内精确定义每一个字符的宽度。

出生日期码字段

年月日总共有 8 位数字:

年份前两位

只能是19或者20,毕竟不可能有 18 几几年出生现在还健在的人,那都得 120 多岁了,所以这里使用候选列表表单域

值设置处仅需要添加1920两个字符串即可,占位符就不要置 0 了,而从候选列表里面选一个作为占位符,最终填表时效果如下,只能从下拉框中选择一个


年份后两位

虽然人类活不到 120 多岁,但是百岁老人还是不罕见,最著名的过百岁才逝世的老人有千古功臣张学良将军


所以年份的后两位的字符串的可能性实在是太多,就不用候选列表表单域,还是使用普通的文本域如下:

格式选择数字,字数限制为 2,字符组合里将单元格宽度``精确的调整至0.26厘米

月两位

1 年只有 12 个月,所以选择使用候选列表这个表单域,值设置里面添加从0112这 12 个候选项,占位符选择 01:


日两位

每个月的天数不太一样,但最多也不过 31 天,所以也选择使用候选列表这个表单域:

至于 2 月份只能留给填表人自己负责不去选择313029这几个数字了

顺序码

出生日期之后的 3 位数字是顺序码,是给同地址码同出生日期码的人编定的顺序号,其中奇数分配给男性,偶数分配给女性,因此设计如下:


校验码

最后一位是校验码,校验码为一位数,但如果最后采用校验码系统计算的校验码是“10”,碍于身份证号码为 18 位的规定,则以“X”代替校验码“10”,因此,校验码有 11 种可能,分别是从09,外加一个“X”,这里并不复制校验码真实的计算方法,就只是禁止输入校验码之外的字符,比如 abcde……之类的英文字符,所以如下设计:

字段的格式选择无,也就是纯文字,在可用符号里直接输入所有这些可能出现的 11 个字符,从0X,限制 1 位数字

这样就能通过复杂字段来严格限制并校验身份证号码的输入了。

固定字段

很多时候填表内容中都会有固定出现的字段,如下图所示,比如电子邮箱地址里面的@符号,比如社交网站个人主页的https://blog.csdn.net/,这些字段可以直接在复合字段中输入,然后在需要填表人填写的位置插入具体的表单域:

然后填表人只需要输入自己的用户名,不用输入完整的地址。

固定字段可以位于复合字段的开头、中间以及末尾的任意位置,例如下图所示,电话号码各个数字段中间的-字符,方便人们读写电话号码,国内的手机号码一般是 11 位,正确的读写断句应该是三位四位四位的读法,对应的在各段之间插入一个-字符,这是有意义的,如下

掩码规则

在普通文字字段格式下拉框中还可以选择使用任意掩码,这种掩码技术比正则表达式稍微简单易学一些,举例如下:

国内的手机号的前三位一般是手机服务运营商的的号段位,比如图中的135是移不动的的号段,所有号段的第 1 位都是1,第 2 和第 3 位则可能是任意阿拉伯数字,所以这里设定掩码的规则是 199,这样就完美的表达了如此规则

手机号的中间 4 位和后 4 位都是阿拉伯数字,因此都开启字数限制设为 4,并开启字符组合

色彩、字体、杂项排版

如上图所示,可以开启边框颜色和背景颜色,标准的颜色板功能,如下图所示

其它的排版可以选择相关字段后,就像正文一样,应用各种排版,如上述各截图,可以设置文字的字体、颜色、斜体、加粗、字号、等等,甚至可以放置在表格里面,用表格来精确调整位置

体验

上面展示的实例的可填写的表单在这里

复杂字段.oform[1]

在你输入手机号码之后它能自动的计算出来你的手机号码:



参考资料

[1] 复杂字段.oform: https://personal.onlyoffice.com/products/files/doceditor?fileid=5154256&doc=Y3l6ZGkwSUhzUy9yTVdBbjN2UnN0NEIxY1d1cjQzeDJ4TWVMbnFWaUluUT0_NTE1NDI1Ng

[2] ......
[3] 表单创建工具中复杂字段介绍和使用指南: 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



ONLYOFFICE 的表单复杂字段开发详解的评论 (共 条)

分享到微博请遵守国家法律