【kintone】条件付きでフィールドを非表示にするJavaScript

kintoneで、選択内容に応じて表示するフィールドを切り替えたいと思ったことはありませんか?

実は、少しのJavaScriptを使うだけで簡単に実現できます!

この記事では、JavaScriptが苦手な方でも試しやすいように、条件付きでフィールドを非表示にする方法を丁寧に解説します。

この記事で分かること
  • 選択内容で切り替えるフィールド表示
  • JavaScriptの基本的な条件分岐(if文)
  • ラジオボタンの値取得とイベント設定
  • 非表示時に値が残る問題と対処法
  • コピペで使えるkintoneカスタマイズ例
目次

準備:問い合わせ対応アプリを作成する

まずはテスト用の問い合わせ対応アプリを作成し必要なフィールドを設置します。

STEP
アプリを作成する

アプリから+マーク(アプリを作成する)をクリックします。

kintoneのアプリ一覧画面で「+(アプリを作成)」をクリックする手順

「はじめから作成」を選択します。

kintoneで新しいアプリをはじめから作成する選択画面

アプリ名は「問い合わせ対応アプリ」にします。

STEP
フィールドを追加する

今回は以下の4つのフィールドを使用します。

これらをドラッグ&ドロップで、画面の好みの位置に配置してください。

フィールド名用途
ラジオボタン対応方法
リンク電話対応用
リンクメール対応用
文字列(複数行)対応メモ
kintoneの問い合わせ対応アプリにフィールドを配置した画面
STEP
フィールドを設定する

設置した4つのフィールドをそれぞれ設定します。

ラジオボタン:対応方法の設定

ラジオボタンフィールドにカーソルを合わせて歯車アイコンをクリック。

以下の内容で設定を行いましょう。

項目名設定内容
フィールド名対応方法
項目と順番電話/メール
並び横並び
初期値電話
フィールドコードtype
kintoneのラジオボタンフィールドを設定している画面

設定できたら「保存」をクリック。

リンク:電話番号の設定

左側のリンクフィールドにカーソルを合わせて歯車アイコンをクリック。

以下の内容で設定を行いましょう。

項目名設定内容
フィールド名電話番号
入力値の種類電話番号
値の重複を禁止する
フィールドコードtel
kintoneで電話番号用リンクフィールドを設定している画面

設定できたら「保存」をクリック。

リンク:メールアドレスの設定

右側のリンクフィールドにカーソルを合わせて歯車アイコンをクリック。

以下の内容で設定を行いましょう。

項目名設定内容
フィールド名メールアドレス
入力値の種類メールアドレス
値の重複を禁止する
フィールドコードemail
kintoneでメールアドレス用リンクフィールドを設定している画面

設定できたら「保存」をクリック。

文字列(複数行):対応メモの設定

文字列(複数行)フィールドにカーソルを合わせて歯車アイコンをクリック。

以下の内容で設定を行いましょう。

項目名設定内容
フィールド名対応メモ
kintoneの文字列(複数行)フィールドで対応メモを設定している画面

設定できたら「保存」をクリック。

STEP
アプリを公開する

設定したアプリを公開します。

画面右上の「アプリを公開」をクリック

kintone「アプリを公開」ボタンをクリックする画面

確認ダイアログが表示されるので「OK」をクリックして公開完了です。

ここまでで準備は完了です。では、いよいよJavaScriptの実装に入っていきましょう!

実装:JavaScriptを反映する

サンプルコードコピー

以下のコードをコピーして、テキストファイルに貼り付けましょう。

(function () {
    'use strict';

    function toggle(record) {
        var type = record.type.value;

        // 一度全て非表示+値クリア
        kintone.app.record.setFieldShown('tel', false);
        kintone.app.record.setFieldShown('email', false);

        record.tel.value = '';
        record.email.value = '';

        if (type === '電話') {
            kintone.app.record.setFieldShown('tel', true);
        }

        if (type === 'メール') {
            kintone.app.record.setFieldShown('email', true);
        }
    }

    kintone.events.on([
        'app.record.create.show',
        'app.record.edit.show'
    ], function (event) {
        toggle(event.record);
        return event;
    });

    kintone.events.on(
        'app.record.create.change.type',
        function (event) {
            toggle(event.record);
            return event;
        }
    );

})();

ファイル保存の方法

テキストファイルに貼り付けたら、

1.「ファイル」→「名前を付けて保存」

2.「ファイルの種類」を すべてのファイル に設定

3.「ファイル名」は toggle_fields_by_radio.js

保存先はデスクトップなど、分かりやすい場所にしておきましょう。

これでJavaScriptファイルが完成しました。次はkintoneに読み込んでいきます。

JavaScriptファイルをアップロード

作成した toggle_fields_by_radio.jsをkintoneに読み込みます。

STEP
設定画面を開く

1.対象アプリの歯車アイコンの矢印をクリック

2.カスタマイズ/サービス連携をクリック

3.JavaScript/CSSでカスタマイズをクリック

kintoneアプリのJavaScript/CSSカスタマイズ設定画面
STEP
対象ファイルをアップロード

作成したファイルをアップロードします。

1.「アップロードして追加」をクリック

2.先ほど保存した toggle_fields_by_radio.jsをダブルクリック

kintoneにJavaScriptファイルをアップロードしている設定画面

JavaScriptファイルが追加されているかを確認しましょう。

JavaScriptファイルが追加されている確認画面
STEP
設定を保存

画面右下の「保存ボタン」をクリックしましょう!

kintoneのJavaScriptカスタマイズ設定を保存する画面

右上の「アプリの更新」をクリック、

確認画面が表示されるので再度「アプリの更新」をクリックします。

kintoneアプリの更新内容を反映するための確認画面

お疲れさまでした!これで郵便番号から住所を自動入力できるアプリが完成です。

実際に作成したアプリをあなたの手で体感してみてください。

Javascriptコード解説

ここでは皆さんがコピペしたコードの中身について簡単に解説します。

全体の構造(準備)

(function () {
    'use strict';

この部分は、今回のJavaScriptが他のカスタマイズに影響を与えないようにするための設定です。

特別な処理はしていないため、このまま記述して問題ありません。

表示切り替えを行う関数

function toggle(record) {
    var type = record.type.value;
  • toggle 関数は、表示・非表示を切り替えるための処理をまとめたものです。
  • record.type.value で、ラジオボタン(対応方法)の選択内容を取得しています。

フィールドをリセット

// 一度全て非表示+値クリア
kintone.app.record.setFieldShown('tel', false);
kintone.app.record.setFieldShown('email', false);

record.tel.value = '';
record.email.value = '';

まず、電話番号とメールアドレスのフィールドを両方とも非表示にし、入力されていた値も空にします。

kintoneでは非表示にしても値が残るため、この処理が重要です。

選択内容に応じた表示切り替え

if (type === '電話') {
    kintone.app.record.setFieldShown('tel', true);
}

if (type === 'メール') {
    kintone.app.record.setFieldShown('email', true);
}

対応方法が「電話」の場合は電話番号を、「メール」の場合はメールアドレスを表示します。

条件分岐だけのシンプルな処理です。

イベント設定

kintone.events.on([
    'app.record.create.show',
    'app.record.edit.show'
], function (event) {
    toggle(event.record);
    return event;
});

kintone.events.on(
    'app.record.create.change.type',
    function (event) {
        toggle(event.record);
        return event;
    }
);
  • レコードの新規作成・編集画面を開いたとき
  • ラジオボタン(対応方法)を変更したとき

これらのタイミングで toggle 関数を実行し、常に正しい表示状態になるようにしています。

まとめ

今回の記事では 条件付きでフィールドを非表示にする方法 をご紹介しました。

紹介したJavascriptを応用すると残業申請アプリやアンケートアプリなど様々な場面で活用することができます!

自分好みにカスタマイズをして普段の業務をラクラク管理していきましょう。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次