有一些关于布局、脚本支持和HTML5表单范围的常见问题解答(FAQ)。
为什么中的条形码和签名字段未显示在我的表单中?
答案:条形码和签名字段在HTML或移动场景中无关。 这些字段显示为非交互区域。 但是,AEM Forms Designer提供了一个新的签名涂写字段,该字段可用于代替签名字段。 也可以添加 自定义构件 用于条形码,并将其集成。
XFA文本字段是否支持富文本?
答案: XFA字段允许在AEM Forms Designer中使用丰富内容,不支持该字段,该字段将呈现为普通文本,不支持从用户界面为文本设置样式。 此外,具有梳状属性的XFA字段会显示为正常字段,尽管根据梳状数字的值,仍对允许的字符数存在限制。
关于使用可重复子表单是否有任何限制?
答案:可重复子表单的初始计数应为1个或更多。 不支持初始计数为零的可重复子表单。 您还可以选择使用可重复的子表单,而不在加载表单时显示它。 要实现用例,请执行以下操作:
将可重复子表单的初始计数设置为1。
使用窗体的初始化事件来隐藏子窗体的主实例。 例如,下面的代码在表单初始化时隐藏子表单的主要实例。 它还验证应用程序类型,以确保脚本仅在客户端执行:
if ((xfa.host.appType == "HTML 5" || xfa.host.appType == "Exchange-Pro" || xfa.host.appType == "Reader")&&(_RepeatSubform.count == 1)&&(form1.Page1.Subform1.RepeatSubform.Key.rawValue == null)) {
RepeatSubform.presence = "hidden";
}
打开用于添加子表单实例的脚本以进行编辑。 添加如下所示的代码以添加子表单脚本的实例。
下面的代码检查子表单的隐藏实例。 如果找到子表单的隐藏实例,请删除子表单的隐藏实例,然后插入新的子表单实例。 如果找不到子表单的隐藏实例,则只需插入子表单的新实例。
if (RepeatSubform.presence == "hidden")
{
RepeatSubform.instanceManager.insertInstance(0);
RepeatSubform.instanceManager.removeInstance(1);
}
else
{
RepeatSubform.instanceManager.addInstance(1);
}
打开用于移除子表单实例的脚本进行编辑。 添加如下代码以删除Subform脚本的实例。
该代码检查子表单的计数。 如果子表单的数量达到1,则代码会隐藏子表单,而不是删除子表单。
if (RepeatSubform.instanceManager.count == 1) {
RepeatSubform.presence = "hidden";
} else {
RepeatSubform.instanceManager.removeInstance(RepeatSubform.instanceManager.count - 1);
}
打开表单的预提交事件进行编辑。 将以下脚本添加到事件中,以在编辑之前删除脚本的隐藏实例。 它可防止在提交时发送隐藏子表单的数据。
if(RepeatSubform.instanceManager.count == 1 && RepeatSubform.presence == "hidden") {
RepeatSubform.instanceManager.removeInstance(0);
}
有关使用隐藏子表单是否有任何限制?
答案:跨页面拆分的具有复杂层次结构的隐藏子表单会导致布局问题。 解决方法是将子表单标记为最初可见,然后根据某些逻辑或数据将其隐藏在初始化脚本中。
为什么某些文本被截断或在HTML5中显示不正确?
答案:如果Draw或Caption文本元素没有足够的空间用于显示内容,则移动设备表单呈现版本中的文本会显示为截断。 此截断也可在AEM Forms Designer的“设计”视图中看到。 虽然此截断可在PDF中处理,但无法在HTML5表单中处理。 要避免出现此问题,请为Draw或Caption Text提供足够的空间,以便在AEM Forms Designer的设计模式下不会截断文本。
我观察到与缺少内容或重叠内容相关的布局问题。 原因是什么?
回答:如果在同一位置有一个“绘制文本”或“绘制图像”元素以及另一个重叠元素(例如,矩形),则在AEM Forms Designer的“层次结构”视图中,如果在文档顺序中稍后出现“绘制文本”内容,则内容将不可见。 PDF支持透明分层,但HTML/浏览器不支持透明分层。
为什么在HTML表单中显示的某些字体与设计表单时使用的字体不同?
答案:HTML5 Forms不允许嵌入字体(与字体嵌入到表单中的PDF forms相反)。 要使表单的HTML版本按预期呈现,请确保AEM Forms服务器的CRX存储库(AEM Content Repository)中以及安装了AEM Designer的计算机上的字体可用。 当AEM Forms服务器的CRX存储库中或AEM Designer安装位置中无法使用字体时,表单将渲染为回退字体。
HTML表单中是否支持vAlign和hAlign属性?
答案:是,支持vAlign和hAlign属性。 Internet Explorer和多行字段中不支持vAlign属性。
HTML5表单是否支持希伯来字符?
答案:除Microsoft Internet Explorer外,HTML5表单在所有浏览器中均支持希伯来字符。
HTML5表单对数值字段是否有任何限制?
答案:是,HTML5表单存在一些限制。 如果数字位数大于picture子句中指定的计数,则数字不会本地化,而是以英语区域设置显示。
为什么HTML表单的大小大于PDF forms?
答案:要将XDP渲染到HTML表单,需要大量中间数据结构和对象,例如表单dom、数据dom和布局dom。
对于PDF forms,Adobe Acrobat具有内置的XTG引擎,可用于创建中间数据结构和对象。 Acrobat还负责布局和脚本。
对于HTML5表单,浏览器没有内置的XTG引擎来创建中间数据结构和原始XDP字节的对象。 因此,对于HTML5表单,中间结构在服务器上生成并发送到客户端。 在客户端,基于JavaScript的脚本和布局引擎使用这些中间结构。
中间结构的大小取决于原始XDP和与XDP合并的数据的大小。
在xdp中使用表是否有任何限制?
答案:复杂的表会导致渲染时出现问题。
可访问表格是否有任何限制?
回答:是,可访问表具有以下限制:
不支持嵌套表格和表格内的子表单。
仅表的顶行或左列支持标题。 中间表元素不支持标头。 如果所有行与列与表的最顶部行或最左侧的列一起使用,则可以将标题应用于支持多个行与列标题。
Rowspan
和 colspan
不支持来自表内的随机位置。
无法动态添加或删除包含rowspan值大于1的元素的行的实例。
屏幕阅读器的工具提示和标题的阅读顺序是什么?
答案:
当您将光标悬停在字段上时,会显示工具提示。 如何禁用它?
回答:要在悬停鼠标时禁用工具提示,请在Designer的辅助功能面板中选择“无”。
在Designer中,用户可以配置单选按钮和复选框的自定义外观属性。 在渲染表单时,HTML5表单是否考虑此类自定义外观属性?
回答:HTML5表单忽略单选按钮和复选框的自定义外观属性。 单选按钮和复选框根据底层浏览器的规范显示。
在支持的浏览器中打开HTML5表单时,相邻放置字段的边框未正确对齐,或子表单出现重叠。 在Forms Designer中预览同一HTML5表单时,字段和布局不会出现不对齐,并且子表单会显示在正确的位置。 如何修复此问题?
答案:当子表单设置为流内容并且子表单具有隐藏的边框元素时,相邻放置字段的边框未正确对齐或子表单出现重叠。 要解决此问题,您可以删除或注释隐藏的 <border> 元素。 例如,以下各项 <border> 元素被标记为注释:
<!--<border>
<edge presence="hidden"/>
<corner thickness="0.175mm" presence="hidden"/>
</border> -->
为什么屏幕阅读器不能正确使用日期/时间字段对象?
答案:屏幕阅读器不支持日期/时间字段。 但是,您可以手动在字段中输入日期/时间以使屏幕阅读器能够阅读该字段。 使用工具提示或屏幕阅读器文本指示用户手动选择字段的日期/时间。
HTML5表单是否支持浮动字段的显示模式?
答案:HTML5表单不支持浮动字段的显示模式。
HTML5 Forms中日期字段的格式是什么?
答案:“日期”字段接受ISO格式YYYY-MM-DD。 如果以其他某种格式指定日期,则在用户退出该字段之前,日期字段不接受格式。
JavaScript实施对HTMLForms是否有任何限制?
答案:
使用formCalc是否有任何限制?
回答:当前仅实现了formCalc脚本的子集。 有关详细信息,请参阅 脚本支持.
是否有任何建议的命名惯例以及要避免的保留关键字?
答案:
HTML5表单是否支持浮动字段?
回答:是,HTML5 Forms支持浮动字段。 要启用浮动字段,请将以下属性添加到渲染配置文件:
默认情况下,这些字段不启用浮动功能。 您可以使用Forms Designer设置字段的浮动属性。
打开CRXde Lite并导航到 /content/xfaforms/profiles/default
节点。
添加资产 mfDataDependentFloatingField
类型字符串并将属性的值设置为 true
.
单击 全部保存. 现在,使用更新的渲染配置文件为HTMLForms启用了浮动字段。
要在不更新渲染配置文件的情况下为特定表单启用浮动字段,请将mfDataDependentFloatingField=true属性作为URL参数传递。
HTML5表单是否多次执行初始化脚本和表单就绪事件?
回答:是,初始化脚本和表单就绪事件会执行多次,在服务器上至少执行一次,在客户端至少执行一次。 建议基于某些业务逻辑(表单或字段数据)编写诸如initialize或form:ready事件之类的脚本,以便基于数据和幂等状态(如果数据相同)执行操作。
HTML5表单中是否有保留关键词?
答案:所有HTML5表单API都是保留关键词。 对于自定义API/函数,请使用与不同的名称 HTML5表单API. 除了保留的关键字之外,如果您使用以下划线(_)开头的对象名称,建议在下划线后添加唯一的前缀。 添加前缀有助于避免与HTML5表单内部API发生任何可能的冲突。 例如,_fpField1