HTML5表單的常見問答集(FAQ)

HTML5表格的版面配置、指令碼支援和範圍有一些常見問題(FAQ)。

配置

  1. 為什麼條碼和簽名欄位不會出現在我的表單中?

    答案:條碼和簽名欄位與HTML或行動藍本無關。 這些欄位會顯示為非互動區域。 不過,AEM Forms設計人員提供新的簽名塗鴉欄位,可用來取代簽名欄位。 您也可以新增條碼的自訂Widget並加以整合。

  2. XFA文字欄位是否支援豐富式文字?

    答案:XFA欄位不支援在AEM Forms設計人員中提供多樣化內容,並會呈現為一般文字,而不支援從使用者介面設定文字樣式。 同時,具有梳狀屬性的XFA欄位顯示為正常欄位,儘管根據梳狀數字的值仍然對允許的字元數有限制。

  3. 使用可重複的子表單是否有任何限制?

    答案:可重複的子表單的初始計數應為1或更多。 不支援初始計數為零的可重複子表單。 您也可以選擇使用可重複的子表單,而不是在表單載入時顯示。 要實現使用案例:

    1. 將可重複子表單的初始計數設定為1。

      初計

    2. 使用表單的initialize事件隱藏子表單的主實例。 例如,以下代碼在表單初始化時隱藏子表單的主實例。 此外,它還會驗證應用程式類型,以確保指令碼僅在用戶端執行:

      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";
      }
      
    3. 開啟指令碼以新增子表單的例項以進行編輯。 新增程式碼(如下),以新增子表單指令碼的例項。

      下面的代碼檢查子表單的隱藏實例。 如果找到子表單的隱藏實例,請刪除子表單的隱藏實例,並插入新的子表單實例。 如果找不到子表單的隱藏實例,則只需插入子表單的新實例。

      if (RepeatSubform.presence == "hidden")
      {
      RepeatSubform.instanceManager.insertInstance(0);
      RepeatSubform.instanceManager.removeInstance(1);
      }
      else
      {
      RepeatSubform.instanceManager.addInstance(1);
      }
      
    4. 開啟用於刪除子表單實例以進行編輯的指令碼。 將下列程式碼新增至移除子表單指令碼的例項。

      程式碼會檢查子表單的計數。 如果子表單的計數達到1,程式碼會隱藏子表單,而非刪除子表單。

      if (RepeatSubform.instanceManager.count == 1) {
      RepeatSubform.presence = "hidden";
      } else {
      RepeatSubform.instanceManager.removeInstance(RepeatSubform.instanceManager.count - 1);
      }
      
    5. 開啟表單的預先提交事件以進行編輯。 將下列指令碼新增至事件,以在編輯前移除指令碼的隱藏例項。 它可防止在提交時傳送隱藏子表單的資料。

      if(RepeatSubform.instanceManager.count == 1 && RepeatSubform.presence == "hidden") {
      RepeatSubform.instanceManager.removeInstance(0);
      }
      
  4. 使用隱藏子表單有任何限制嗎?

    答案:具有複雜階層的隱藏子表單會跨頁分割,造成版面配置問題。 因應措施是將子表單標示為一開始可見,然後根據某些邏輯或資料,在初始化指令碼中隱藏子表單。

  5. 為什麼HTML5中有些文字會截斷或顯示不正確?

    答案:如果未為「繪圖」或「標題」文字元素提供足夠空間來顯示內容,則行動表單轉譯中會出現截斷的文字。 此截斷也顯示在AEM Forms設計師的「設計」視圖中。 雖然此截斷可在PDF中處理,但無法在HTML5表格中處理。 為避免此問題,請為「繪圖」或「標題文字」提供足夠的空間,以免在AEM Forms設計人員的設計模式中截斷文字。

  6. 我正在觀察與遺失內容或內容重疊相關的版面問題。 原因何在?

    答案:如果在同一位置有「繪製文本」或「繪製影像」元素以及另一個重疊元素(如「矩形」),則如果「繪製文本」內容稍後以文檔順序出現(在「AEM Forms設計器層次結構」視圖中),則不會顯示它。 PDF支援透明分層,但HTML/瀏覽器不支援透明分層。

  7. 為何HTML表格中顯示的某些字型與設計表格時使用的字型不同?

    答案:HTML5表格不嵌入字型(與字型內嵌在表格中的PDF forms相反)。 若要如預期般呈現HTML版表單,請確定XDP中指定的字型可在伺服器和用戶端機器上使用。 如果伺服器上未提供所需的字型,則會使用回傳字型。 此外,如果您在「表單範本」中使用用戶端裝置上無法使用的字型,則會使用瀏覽器的預設字型來轉換文字。

  8. vAlign和hAlign屬性是否支援HTML表單?

    是的,支援vAlign和hAlign屬性。 vAlign屬性不受Internet Explorer和多行欄位的支援。

  9. HTML5表格是否支援希伯來文字元?

    HTML5表單支援除Microsoft Internet Explorer外的所有瀏覽器中的希伯來文字元。

  10. HTML5表單對數值欄位有任何限制嗎?

    答案:是的,HTML5表格有一些限制。 如果數字數大於picture子句中指定的計數,則數字不本地化,並以英語地區顯示。

  11. 為什麼HTML表格的大小比PDF forms大?

    將XDP轉換為HTML表單時,需要許多中介資料結構和物件,例如表單dom、資料dom和版面dom。

    對於PDF forms,Adobe Acrobat有內建的XTG引擎,可建立中介資料結構和物件。 Acrobat也負責排版和劇本。

    對於HTML5表單,瀏覽器沒有內建的XTG引擎來建立中介資料結構,也沒有來自原始XDP位元組的物件。 因此,對於HTML5表單,會在伺服器上產生中介結構並傳送至用戶端。 在用戶端,以JavaScript為基礎的指令碼和版面引擎會使用這些中介結構。

    中間結構的大小取決於原始XDP和與XDP合併的資料的大小。

  12. 在xdp中使用表有任何限制嗎?

    答案:複雜的表格會在轉換時產生問題。

    • 不支援表內的Section(子表單集)。
    • 某些表格中的頁首或頁尾行會標籤為重複。 將這些表格分割為多個頁面可能會遇到一些問題。
  13. 可存取的表格有任何限制嗎?

    答案:是的,可訪問的表具有以下限制:

    • 不支援表內的嵌套表和子表單。

    • 表格頂端列或左側列僅支援標題。 中間表格元素不支援標題。 您可以將標題套用至多列,而且支援欄標題,前提是所有這些列和欄都與表格的最上方列或最左側列一起。

    • Rowspancolspan支援從表格內的隨機位置。

    • 您無法動態新增或移除包含行範圍值大於1之元素的列例項。

  14. 螢幕閱讀程式的工具提示和標題閱讀順序為何?

    • 當字幕和工具提示同時存在時,會讀取唯一的字幕。 如果標題不可用,則會讀取工具提示。 您也可以使用表單設計工具指定XDP中的讀取優先順序
    • 當您暫留元素時,會顯示工具提示。 如果工具提示不可用,則會顯示語音文字。 如果語音文字不可用,則顯示欄位名稱。
  15. 當您暫留欄位時,會顯示工具提示。 如何禁用它?

    若要停用暫留時的工具提示,請在設計工具的協助工具面板中選取「無」。

  16. 在Designer中,用戶可以配置單選按鈕和複選框的自定義外觀屬性。 在轉譯表單時,HTML5表單會考量到這些自訂外觀屬性嗎?

    答案:HTML5表單會忽略選項按鈕和核取方塊的自訂外觀屬性。 選項按鈕和核取方塊會根據基礎瀏覽器的規格顯示。

  17. 在支援的瀏覽器中開啟HTML5表格時,相鄰放置的欄位邊框無法正確對齊,或子表格會重疊。 當在Forms設計人員中預覽相同的HTML5表單時,欄位和版面不會顯示未對齊,子表單會顯示在正確的位置。 如何修正此問題?

    將子表單設定為流內容且子表單具有隱藏的邊框元素時,相鄰放置的欄位的邊界不正確對齊或子表單顯示重疊。 要解決此問題,可以從相應的XDP中刪除或注釋隱藏的<border>元素。 例如,下列<border>元素會標示為備注:

                <!--<border>
                   <edge presence="hidden"/>
                   <corner thickness="0.175mm" presence="hidden"/>
                </border> -->
    
  18. 為什麼螢幕閱讀程式無法正確處理日期/時間欄位物件?

    螢幕閱讀程式不支援日期/時間欄位。 不過,您可以手動輸入欄位的日期/時間,讓螢幕閱讀程式加以閱讀。 使用工具提示或螢幕閱讀器文字,指示使用者手動選取欄位的日期/時間。

  19. HTML5表格是否支援浮動欄位的顯示模式?

    答案:HTML5表格不支援浮動欄位的顯示模式。

指令碼

  1. HTMLForms的JavaScript實作有任何限制嗎?

    答案:

    • xfa.connectionSet指令碼的支援有限。 對於connectionSet,僅支援伺服器端調用web服務。 如需詳細資訊,請參閱指令碼支援
    • 用戶端指令碼中不支援$record和$data。 不過,如果指令碼是以formReady、layoutReady區塊編寫,則指令碼仍然有效,因為這些事件會在伺服器端執行。
    • 不支援XFA Draw元素特定的指令碼,例如變更Draw文字(或欄位中的標題文字)。
  2. 使用formCalc有任何限制嗎?

    答案:當前只實施formCalc指令碼的子集。 如需詳細資訊,請參閱指令碼支援

  3. 是否有建議的命名慣例,以及是否有要避免的保留關鍵字?

    • 在AEM Forms設計人員中,建議不要以下划線()開頭對象的名稱(如子表單或文本欄位)。 要在名稱的開頭使用下划線,請在下划線<prefix><objectname>後面添加前置詞。
    • 所有HTML5表格API都是保留關鍵字。 對於自訂API/函式,請使用與HTML5表單API不相同的名稱。
  4. HTML5表格是否支援浮動欄位?

    是的,HTML5Forms支援浮動欄位。 若要啟用浮動欄位,請新增下列屬性至演算描述檔:

    注意

    依預設,這些欄位不會啟用浮動。 您可以使用Forms設計器設定欄位的浮動屬性。

    1. 開啟CRXde lite並導航到/content/xfaforms/profiles/default節點。

    2. 新增字串類型的屬性mfDataDependentFloatingField,並將屬性的值設為true

    3. 按一下​保存全部。 現在,使用更新的演算描述檔,HTMLForms的浮動欄位已啟用。

      注意

      若要為特定表單啟用浮動欄位而不更新轉換描述檔,請將mfDataDependentFloatingField=true屬性作為URL參數傳遞。

  5. HTML5表單是否會多次執行初始化指令碼和表單就緒事件?

    是的,初始化指令碼和表單就緒事件會執行多次,至少在伺服器上執行一次,在客戶端執行一次。 建議根據某些業務邏輯(表單或欄位資料)編寫諸如initialize或form:ready事件之類的指令碼,以便根據資料狀態和冪等元(如果資料相同)執行操作。

設計XDP

  1. HTML5表單中是否有保留的關鍵字?

    答案:所有HTML5表格API都是保留關鍵字。 對於自訂API/函式,請使用與HTML5表單API不相同的名稱。 除保留關鍵字外,如果您使用以底線(_)開頭的物件名稱,建議在底線後面加入唯一首碼。 新增首碼有助於避免與HTML5表單內部API產生任何可能的衝突。 例如, _fpField1

本頁內容

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now