サポート > リポジトリ > 入力制御 > 他項目の値による入力制御
ja | en

ある項目が設定した値になった場合、該当する項目を入力可または入力不可とします。

ステータスが "トラブル" のとき、「原因」項目を入力できる例を説明します。 ステータスマスタは図1のように用意されているとします。

図1 ステータスマスタの設定

レポート新規登録画面の初期状態は、「原因」項目の入力が行えません。

図2 原因項目は入力できない

ステータスに "トラブル" を選択すると、「原因」項目が入力できます。

図3 原因項目の入力が可能になる

定義方法

上記サンプルアプリケーションを実現する「レポート」モデルを図4に示します。

図4 レポートモデルの定義

「原因」項目の詳細定義ダイアログを開きます。 「入力可・不可制御>他項目の値によって入力可にする」に "項目名=値" という形式で式を記述します。

status=2
図5 他項目の値によって入力可にする設定

複数の値を指定する場合

一つの項目に対して複数の値を指定する場合は、"," (カンマ)区切りで指定します。以下の例は優先度が 1 または 2 の場合という意味になります。

status=1,status=2

他項目に値が入力されている場合に入力可とする

ある項目に値が入力されている場合、という条件を記述できます。他項目の名前がstatusのとき、

status=

とします。値の指定が無いため、入力値がある場合に条件が成立するようになります。

変更時の既存データの扱い

上記例において、新規登録時に「原因」を記載、「ステータス」を "トラブル" 以外に変更したとします。このとき、すでに入力済みの「原因」の扱いをどうするかについて、二つの方法を提供しています。

選択肢挙動
空白で上書き(標準)入力不可となった段階で、入力値を消去(空白で上書き)します。
(すでに入力済みの項目値は画面上に維持されますが、サーバには送信されません。そのため入力値は消去されます。)
値を保持入力不可となった場合でも、すでに入力された値は残します。
入力可・不可制御は、条件により入力項目の disabled 属性を true, false へ切り替えることで実現しています。 入力項目の disabled 属性が true の場合は入力欄がグレーアウトされ、入力値があってもサーバへは値が送信されません。これは HTML の仕様です。

この設定の切り替えは、図6 に示すように選択できます。未設定時は「空白で上書き」となります。

図6 変更時の既存データの扱いを指定する

必須指定との組み合わせ

入力可とする制御は必須チェックと組み合わせて定義することができます。 「入力可」になった場合に必須入力項目となります。

補足:「ステータスID」項目の式

上記の例で「ステータスID」という項目は本来、不要です。ID値を目視するために用意しています。 この項目は(IDを格納するため)数値型としており、次の式を適用しています。

${status#id}

式の記述方法の詳細は「計算式>モデル参照」をお読み下さい。

条件に合致した場合に入力不可にする、という指定を行うこともできます。 図7は、ステータスが"1"の場合に入力を不可にするという例です。

図7 原因項目の入力が不可能になる

定義方法

「入力可・不可制御 > 他項目の値によって入力不可にする」の欄に条件式(項目名=値)を記述します。

図8 他項目の値によって入力不可にする設定

定義できない型

「他項目」として定義できない型

  • 上記「定義できない型」の4パターン
  • ファイル型
  • モデル参照(検索画面)

条件式の記述

  • 式は "項目名=値" という書式のみを受け付けます。関数を記述することはできません。またモデル参照項目では、ID部を指定してください。(上記例では "トラブル" という文字ではなく、"2" というIDを使っていることを指します。)
  • 条件式に複数の項目を記述することはできません。例えば gender=1,status=2 という指定を行うことはできません。

両方を同時に指定することはできません

「他項目の値によって入力可とする」「他項目の値によって入力不可とする」を両方、同時に指定することはできません。

読み込み専用項目の扱い

「他項目」が読み込み専用項目の場合でも画面の初期表示時のみ「他項目の値による入力制御」が動作します。ただし表示後(式などによって)読込専用項目の値が変わっても入力可/不可の状態は変化しません。

本機能は、「他項目」の値が変更された際に発生する JavaScript の change や blur イベントを利用しているためです。読込専用項目ではこれらのイベントが発生しないため、値が変更された場合に入力可/不可の状態を変化させることができません。

ダミーの隠し項目を作成し、読み込み専用項目の値を隠し項目に転記した上で制御を行うようにすることで、この制約を回避できます。