他項目の値による入力制御

最終更新日: 2022年12月13日

入力可制御

レポートモデルのステータス項目で「トラブル」を選択したときに「原因」項目を入力できるようにする例です。
ステータスマスタの初期データは、下図の通り用意されているとします。

ステータスマスタの設定
  1. レポート新規登録画面の初期状態は、「原因」項目の入力が行えません。
    原因項目は入力できない
  2. ステータス「トラブル」を選択すると、「原因」項目が入力できるようになります。
    原因項目の入力が可能になる

設定方法

  1. 「レポート」モデルは次の通り設定します。
    ステータスID項目はルックアップとし、ステータス項目の値に紐づく主キーを参照します。
    また、「原因の入力制御」という項目を用意します。
    レポートモデルの定義
  2. 「原因の入力制御」は隠し項目とします。「入力制御 > 隠し項目」で全画面有効にします。
    隠し項目設定
  3. 「原因」項目の入力可・不可制御の設定を下図の通り行います。「原因の入力制御」項目の値が"1"の時にこの項目が入力できるようになる設定です。
    入力可制御の設定

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

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

    入力済データをどうするかの設定
    選択肢挙動
    空白で上書き(標準)入力不可となった段階で、入力値を消去(空白で上書き)します。
    (すでに入力済みの項目値は画面上に維持されますが、サーバには送信されません。そのため入力値は消去されます。)
    値を保持入力不可となった場合でも、すでに入力された値は残します。
    ※ 入力可・不可制御は、条件により入力項目の disabled 属性を true, false へ切り替えることで実現しています。 入力項目の disabled 属性が true の場合は入力欄がグレーアウトされ、入力値があってもサーバへは値が送信されません。これは HTML の仕様です。
  4. 次に、「原因の入力制御」に値をセットするスクリプトを設定します。
    ステータス「トラブル」(ID=2)が選択されたときに「原因の入力制御」に1をセットすることで原因項目を入力可能にします。
    入力可制御の設定

必須指定との組み合わせ

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

入力不可制御

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

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

設定方法

「入力可制御」の手順2まで同じ設定を行った状態で、入力可・不可制御の設定を「入力不可」、値を"0"とします。
これにより、値が0の場合は入力不可となります。

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

スクリプトも変更します。

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

仕様・制約

定義できない型

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

  • 上記「定義できない型」に記載の内容
  • ファイル型
  • モデル参照(検索画面)

条件式の記述

  • モデル参照項目では、ID部を指定してください。(上記例では "トラブル" という文字ではなく、"2" というIDを使っていることを指します。)

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

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

読み込み専用項目(ルックアップ項目、自動計算項目を含む)の扱い

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

この回避策として、この読み込み専用項目を、同時に隠し項目としても設定してください。

ファイル型の扱い

ファイル型では「空白で上書き」「値を保持」の設定は無効です。(ファイルは常にサーバに送信されるためです。ファイルを消去する場合はクリアボタンをクリックしてください。)