!++++
Ver.5 [ 機能を見る ] [ 機能設定を見る ]
Ver.6 [ 機能を見る ] [ 機能設定を見る ]
!----
1. はじめに
Client-side JavaScript を用いて、条件に応じたタブの表示/非表示を切り替える方法および、各項目の入力を制御する方法について紹介します。
2. サンプル機能の内容と確認ポイント
「タブ制御用(0:非表示/1:表示/9:編集不可)」単票ブロックでは、各ページ項目の値に基づき、タブの表示/非表示および、各項目の入力編集可否を制御します。
※ 本ブロックは「ID」による判定を行うため、検索条件として「ID」の入力が必要です。
ページ1~5の「ID」と値の対応:
| ID | p.1 タブ | p.2 タブ | p.3 タブ | p.4 タブ | p.5 タブ |
|---|---|---|---|---|---|
| 1 | 0:非表示 | 9:編集不可 | 9:編集不可 | 1:入力可 | 1:入力可 |
| TEST0001 | 1:入力可 | 9:編集不可 | 1:入力可 | 1:入力可 | 0:非表示 |
| TEST0002 | 0:非表示 | 1:入力可 | 0:非表示 | 0:非表示 | 0:非表示 |
Client-side JavaScript による実装内容は以下のとおりです。
-
「タブ制御用(0:非表示/1:表示/9:編集不可)」ブロックにおいて、「表示項目名」ページ1~5の
input要素を取得します。 -
タブリスト内の
li要素をすべて取得します。 -
手順1で取得した
input要素に対してsomeを使用し、各要素に対応するタブ要素を取得の上、いずれかが選択状態かつ表示状態であるかを判定します。 -
手順1の
input要素に対してforEachを使用し、valueが0の場合は非表示に、それ以外の場合は表示に切り替えます。 -
上記の繰り返し処理中に選択中で表示中のタブが存在せず、まだ最初の表示タブをクリックしていない場合は、
setTimeoutにより100ms待機し、input要素が非表示(style.display: noneでない)である場合にタブのリンク要素をクリックさせます。※初期検索時に先頭タブが非表示の場合、2番目以降の表示タブをアクティブにするための処理です。
- 最後に、
firstVisibleTabClicked(最初に表示されたタブをクリックしたかどうかを示すフラグ)をtrueに設定します。
🔍 確認いただけるポイント
-
「TEST0001」と入力して検索した場合、ページ5のタブが非表示になっていること。
-
「TEST0002」と入力して検索した場合、ページ2のタブのみが表示され、かつアクティブになっていること。
- 「初期検索あり」時にいずれかのタブが選択状態(アクティブ)になっていること。
3. 画面イメージ
以下は、検索条件「TEST0001」において、「p.5」が非表示となっている状態を示しています。
以下は、検索条件「TEST0002」において、「p.2」のみが表示され、かつ「p.2」のタブがアクティブな状態を示しています。
以下は、「初期検索あり」の状態で、先頭の「p.1」が非表示の場合に、次に表示されている「p.2」のタブがアクティブになっている状態を示しています。
!++++
使用したコード一覧
!----