HTML5 フォームに関するよくある質問(FAQ) frequently-asked-questions-faq-for-html-forms

レイアウト、スクリプティングサポートおよび HTML5 フォームのスコープに関して、よくある質問(FAQ)があります。

レイアウト layout

  1. バーコードフィールドと署名フィールドがフォームに表示されないのはなぜですか?

    回答:バーコードフィールドと署名フィールドは HTML やモバイルのシナリオに関係していません。これらのフィールドは、インタラクティブではない領域として表示されます。ただし、AEM Forms Designer では、署名フィールドの代わりに使用できる新しい署名手書きフィールドを提供します。また、バーコードのカスタムウィジェットを追加し、それを統合することもできます。

  2. XFA テキストフィールドでは、リッチテキストのサポートはありますか?

    回答:AEM Forms Designer でリッチコンテンツが使用できる XFA フィールドはサポートされていないため、ユーザーインターフェイスからテキストのスタイル設定はサポートされず、リッチテキストは標準テキストとしてレンダリングされます。また、comb の桁の値によって許可される文字数の制限はありますが、comb プロパティのある XFA フィールドも標準フィールドとして表示されます。

  3. 繰り返し可能なサブフォームの使用に関して制限はありますか?

    回答:繰り返し可能なサブフォームには、初期カウントとして「1」以上の値を設定する必要があります。繰り返し可能なサブフォームの初期カウントとして「0」は設定できません。また、繰り返し可能なサブフォームを使用する場合、フォームのロード時に繰り返し可能なサブフォームを非表示にできます。その場合は、以下の手順を実行します。

    1. 繰り返し可能な Subform の初期カウントとして「1」を設定します。

      intial-count

    2. フォームの初期化イベントを使用して、サブフォームのプライマリインスタンスを非表示にします。例えば、次のコードは、フォームを初期化する際にサブフォームのプライマリインスタンスを非表示にします。また、アプリの種類を確認して、スクリプトがクライアントサイドでのみ実行されるようにします。

      code language-javascript
      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. サブフォームのインスタンスを追加するためのスクリプトを編集用に開きます。以下のようなコードを追加して、サブフォームスクリプトのインスタンスをに追加します。

      以下のコードで、サブフォームの非表示インスタンスを確認します。サブフォームの非表示インスタンスが検出された場合は、そのサブフォームの非表示インスタンスを削除し、サブフォームの新しいインスタンスを挿入します。サブフォームの非表示インスタンスが検出されなかった場合は、単純にサブフォームの新しいインスタンスを挿入します。

      code language-javascript
      if (RepeatSubform.presence == "hidden")
      {
      RepeatSubform.instanceManager.insertInstance(0);
      RepeatSubform.instanceManager.removeInstance(1);
      }
      else
      {
      RepeatSubform.instanceManager.addInstance(1);
      }
      
    4. 編集用 Subform のインスタンスを削除するためのスクリプトを開きます。Subform スクリプトのインスタンスを削除するには、以下のようなコードを追加します。

      このコードで、サブフォームのカウントを確認します。サブフォームのカウントが「1」になると、サブフォームが削除する代わりに、サブフォームが非表示になります。

      code language-javascript
      if (RepeatSubform.instanceManager.count == 1) {
      RepeatSubform.presence = "hidden";
      } else {
      RepeatSubform.instanceManager.removeInstance(RepeatSubform.instanceManager.count - 1);
      }
      
    5. フォームの presubmit イベントを編集用に開きます。次のスクリプトをイベントに追加して、編集前にスクリプトの非表示インスタンスを削除します。送信時に非表示サブフォームのデータを送信しないようにします。

      code language-javascript
      if(RepeatSubform.instanceManager.count == 1 && RepeatSubform.presence == "hidden") {
      RepeatSubform.instanceManager.removeInstance(0);
      }
      
  4. 非表示の Subform の使用に関して制限事項はありますか?

    回答:複数のページにまたがる複雑な階層の非表示 Subform は、レイアウトに問題を引き起こします。この問題を回避するには、最初はサブフォームを表示するようにマークを付けておき、後で特定のロジックまたはデータに基づいた初期設定スクリプトで非表示にします。

  5. HTML5 で一部のテキストが切り捨てられたり、正しく表示されないのはなぜですか?

    回答:コンテンツを表示するためのスペースが Draw または Caption のテキスト要素に十分に与えられていないとき、モバイルフォームのレンダリングでテキストが切り捨てられて表示されます。この切り捨ては AEM Forms Designer のデザインビューでも見られます。この切り捨ては PDF では対処できますが、HTML5 フォームでは対処できません。この問題を回避するには、AEM Forms Designer のデザインモードで切り捨てが発生しないよう、Draw またはキャプションのテキストに十分なスペースを用意します。

  6. コンテンツが欠けていたり、コンテンツが重なり合っているなど、コンテンツに関連するレイアウト問題が見られます。理由は?

    回答:Draw Text 要素や Draw Image 要素と同じ位置に重なり合う他の要素(Rectangle など)がある場合、Draw Text のコンテンツが(AEM Forms Designer 階層ビューで)ドキュメント順序の後の方にあると、Draw Text のコンテンツが表示されません。PDF は透明レイヤーをサポートしていますが、HTML/ブラウザーは透明レイヤーをサポートしていません。

  7. HTML フォームで表示されるフォントの一部が、フォームをデザインしているときに使用されるものと違う理由は?

    回答:HTML5 フォームは、フォーム内にフォントが埋め込まれる PDF フォームと違い、フォントを埋め込むことができません。フォームの HTML バージョンが期待どおりにレンダリングされるようにするには、AEM Forms サーバーの CRX リポジトリ(AEM コンテンツリポジトリ)と、AEM Designer がインストールされているマシンで、フォントが使用可能であることを確認します。AEM Forms サーバーの CRX リポジトリ、または AEM Designer がインストールされている場所でフォントが使用できない場合、フォームはフォールバックフォントを使用してレンダリングされます。

  8. vAlign と hAlign の属性は HTML フォームでサポートされていますか?

    回答:はい、vAlign と hAlign 属性はサポートされています。vAlign 属性は、Internet Explorer の場合とマルチラインフィールドの場合はサポートされていません。

  9. HTML5 フォームはヘブライ語の文字をサポートしていますか?

    回答:HTML5 フォームは、Microsoft Internet Explorer 以外のすべてのブラウザーでヘブライ語の文字をサポートしています。

  10. HTML5 フォームは数値フィールドに対して何らかの制限がありますか?

    回答:はい、HTML5 フォームにはいくつか制限があります。桁数が、picture 句で指定されたカウントよりも多い場合は、数字はローカライズされずに英語ロケールで表示されます。

  11. HTML フォームのサイズが PDF フォームのサイズより大きいのはなぜですか?

    回答:XDP を HTML フォームにレンダリングするには、多くの中間データ構造とフォーム DOM、データ DOM、レイアウト DOM などのオブジェクトが必要になります。

    PDF フォームの場合、Adobe Acrobat には中間データ構造およびオブジェクトを作成するための XTG エンジンが組み込まれています。Acrobat はレイアウトおよびスクリプトも管理します。

    HTML5 フォームの場合、ブラウザーには未加工の XDP バイトから中間データ構造およびオブジェクトを作成するための XTG エンジンが組み込まれていません。このため、HTML5 フォームの場合、中間構造はサーバーで生成され、クライアントに送信されます。クライアントでは、JavaScript ベースのスクリプトおよびレイアウトエンジンがこれらの中間構造を使用します。

    中間構造のサイズは、元の XDP のサイズと XDP にマージされたデータによって異なります。

  12. xdp でのテーブルの使用に関して制限事項はありますか?

    回答:複雑なテーブルはレンダリングで問題を引き起こします。

    • テーブル内のセクション(SubformSet)はサポートされていません。
    • 一部のテーブルのヘッダー行またはフッター行は、繰り返しのためにマークされています。そのようなテーブルを複数のページに分割すると、いくつかの問題が発生する可能性があります。
  13. アクセス可能なテーブルに関する制限事項はありますか?

    回答:はい。アクセス可能なテーブルには次の制限事項があります。

    • ネストされたテーブルとテーブル内のサブフォームはサポートされていません。

    • ヘッダーは、テーブルの一番上の行または左の列でのみサポートされています。ヘッダーは、中間テーブル要素に対してはサポートされていません。複数行にヘッダーを適用することができます。そのような行および列がすべてテーブルの一番上の行または一番左の列に連動している場合、列ヘッダーがサポートされます。

    • テーブル内のランダムな場所の Rowspan および colspan はサポートされません。

    • 1 より大きい rowspan 値を持つ要素を含む行のインスタンスは、動的に追加または削除することはできません。

  14. スクリーンリーダーのツールヒントとキャプションの読み取り順序はどうなっていますか?

    回答:

    • キャプションとツールヒントがどちらもある場合は、キャプションのみが読み取られます。キャプションがない場合は、ツールヒントが読み取られます。また、Forms Designer を使用して、XDP での読み取りの優先順位を指定することもできます。
    • 要素にポインタを合わせると、ツールヒントが表示されます。ツールヒントがない場合は、音声テキストが表示されます。音声テキストがない場合は、フィールド名が表示されます。
  15. フィールドにポインタを合わせると、ツールヒントが表示されます。どうすれば無効にできますか?

    回答:マウスオーバーしたときにツールヒントが表示されないようにするには、Designer のアクセシビリティパネルで何も選択しないようにします。

  16. Designer では、ラジオボタンとチェックボックスのカスタムの外観プロパティを設定できます。フォームのレンダリング中、HTML5 フォームはこれらのカスタム Appearanceプロパティを考慮しますか?

    回答:HTML5 フォームは、ラジオボタンとチェックボックスのカスタムの外観プロパティを無視します。ラジオボタンとチェックボックスは、基になるブラウザーの仕様にしたがって表示されます。

  17. サポート対象のブラウザーで HTML5 フォームを開くと、隣接して配置されたフィールドの境界線が正しく配列されないか、サブフォームが重なって表示されます。同じ HTML5 フォームを Forms Designer でプレビューすると、フィールドとレイアウトが正しく配列され、サブフォームも適切な位置に表示されます。この問題を解決するにはどうすればよいですか?

    回答:コンテンツをフローするように設定されているサブフォームに非表示の境界線要素が含まれている場合、隣接するフィールドの境界線が正しく調整されなかったり、サブフォームが重複して表示されたりします。この問題を解決するには、対応する XDP から非表示の <border> 要素を削除するか、コメントを指定します。例えば、次の <border> 要素はコメントとしてマークされます。

    code language-xml
                <!--<border>
                   <edge presence="hidden"/>
                   <corner thickness="0.175mm" presence="hidden"/>
                </border> -->
    
  18. スクリーンリーダーが日付/時間フィールドオブジェクトで正しく機能しないのはなぜですか?

    回答:スクリーンリーダーは日付/時間フィールドをサポートしていません。ただし、フィールドに手動で日時を入力して、スクリーンリーダーに読み上げさせることはできます。ツールチップまたはスクリーンリーダーテキストを使用して、フィールドの日時を手動で選択するようにユーザーに指示します。

  19. HTML5 フォームはフローティングフィールドの表示パターンをサポートしていますか?

    回答:HTML5 のフォームは、フローティングフィールドの表示パターンをサポートしていません。

  20. HTML5 フォームの「日付」フィールドの形式は何ですか?

回答:「日付」フィールドでは、ISO 形式(YYYY-MM-DD)が使用されます。他の形式で日付を指定した場合、フィールドからタブアウトするまで、日付フィールドは書式設定を受け付けません。

スクリプティング scripting

  1. HTML フォームの JavaScript 実装に関して制限事項はありますか?

    回答:

    • xfa.connectionSet スクリプトのサポートが制限されています。connectionSet の場合、web サービスの server-side 起動のみがサポートされています。詳しくは、スクリプティングのサポートを参照してください。
    • クライアント側スクリプトでは $record および $data のサポートはありません。ただし、スクリプトが formReady、layoutReady ブロックで記述されている場合は、これらのイベントはサーバー側で発生するため、スクリプトは機能します。
    • Draw テキスト(フィールドでは Caption テキスト)の変更などの Xfa Draw 要素固有のスクリプトはサポートされていません。
  2. formCalc の使用に関して制限事項はありますか?

    回答:現在、formCalc スクリプトのサブセットのみが実装されています。詳しくは、スクリプティングのサポートを参照してください。

  3. 推奨される命名規則はありますか?また、避けるべき予約済みのキーワードはありますか?

    回答:

    • AEM Forms Designer では、オブジェクト(サブフォーム、テキストフィールドなど)の名前を、アンダースコア()で始めないことをお勧めします。名前の最初にアンダースコアを使用するには、アンダースコアの後にプレフィックスを追加します。例えば、<prefix><objectname> のようにします。
    • すべての HTML5 Forms API は予約済みのキーワードです。カスタムの APIや機能については、HTML5 Forms API と異なる名前を使用します。
  4. HTML5 フォームはフローティングフィールドをサポートしていますか?

    回答:はい、HTML5 フォームはフローティングフィールドをサポートしています。フローティングフィールドを有効にするには、次のプロパティをレンダリングプロファイルに追加します。

    note note
    NOTE
    デフォルトでは、フィールドのフローティングは有効になっていません。Forms Designer を使用して、フィールドのフローティングプロパティを設定できます。
    1. CRXde lite を開き、/content/xfaforms/profiles/default ノードに移動します。

    2. 文字列タイプの mfDataDependentFloatingField プロパティを追加し、プロパティの値を true に設定します。

    3. すべて保存」をクリックします。更新されたレンダリングプロファイルを使用して、HTML フォームでフローティングフィールドが有効になりました。

      note note
      NOTE
      レンダリングプロファイルを更新することなく、特定のフォームでフローティングフィールドを有効にするには、mfDataDependentFloatingField=true プロパティを URL パラメーターとして渡します。
  5. HTML5 フォームでは初期化スクリプトと form ready イベントが複数回実行されますか?

    回答:はい、初期化スクリプトと form ready イベントは複数回(少なくともサーバーサイドで 1 回、クライアントサイドで 1 回)実行されます。initialize イベントや form:ready イベントなどのスクリプトを何らかのビジネスロジック(フォームデータ、フィールドデータなど)に基づいて作成し、データの状態やべき等(データが同じ場合)に基づいてアクションが実行されるようにすることをお勧めします。

XDP のデザイン designing-xdp

  1. HTML5 フォームには予約済みのキーワードがありますか?

    回答:すべての HTML5 フォーム API は予約済みのキーワードです。カスタムの APIや機能については、HTML5 Forms API と異なる名前を使用します。予約済みのキーワード以外で、アンダースコア(_)で始まるオブジェクト名を使用する場合、アンダースコアの後に一意の接頭辞を追加することをお勧めします。接頭辞を追加することで、HTML5 フォームの内部 API との競合を回避しやすくなります。例:_fpField1

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2