顧客リストの郵便番号、TEL、メールの入力をチェックする

目次

はじめに

本記事では、レコード追加/編集や一覧のインライン編集時に、郵便番号/電話番号(TEL)/FAX/メールアドレスといったフィールドの入力値をチェックし、不正な入力を未然に防ぐ方法を紹介します。

動作イメージ

次の条件を満たさない値を入力した場合、エラーメッセージが出ます。

  • 郵便番号:7桁の半角数値
  • 電話番号:10桁または11桁の半角数字
  • FAX番号:10桁または11桁の半角数字
  • メールアドレス:ローカル部(英数字で始まり、英数字・ . _ -を含めてOK)@ ドメイン(英数字や-_で始まり、.を含むドメイン構造をもつ)

チェックは、次のタイミングで行われます。

  • レコード追加/編集画面でフィールドの値を変更したとき
  • レコード一覧のインライン編集でフィールドの値を変更したとき
  • レコード追加/編集を保存するとき
  • レコード一覧のインライン編集を保存するとき

デモ環境

デモ環境で実際に動作を確認できます。
https://dev-demo.cybozu.com/k/64/ (External link)

ログイン情報は cybozu developer networkデモ環境 で確認してください。

カスタマイズを適用するアプリ

サンプルプログラム

プログラム

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
 * 顧客リストの郵便番号、TEL、メールの入力をチェックするサンプルプログラム
 * Copyright (c) 2025 Cybozu
 *
 * Licensed under the MIT License
 * https://opensource.org/license/mit/
 */

(() => {
  'use strict';

  // フィールド設定の定義
  const FIELD_CONFIGS = {
    zip: {
      code: '郵便番号',
      pattern: /^\d{3}-?\d{4}$/,
      errorMessage: '郵便番号は3桁-4桁の半角数字(ハイフンあり・なし)で入力してください。'
    },
    tel: {
      code: 'TEL',
      pattern: /^\d{10,11}$/,
      errorMessage: '電話番号は10桁または11桁の半角数字で入力してください。'
    },
    fax: {
      code: 'FAX',
      pattern: /^\d{10,11}$/,
      errorMessage: 'FAX番号は10桁または11桁の半角数字で入力してください。'
    },
    mail: {
      code: 'メールアドレス',
      pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
      errorMessage: 'メールアドレスの形式が正しくありません。正しい形式で入力してください。'
    }
  };

  // 共通バリデーション関数
  const validateField = (event, fieldKey) => {
    const config = FIELD_CONFIGS[fieldKey];
    const record = event.record;
    const fieldCode = config.code;

    // エラーの初期化
    record[fieldCode].error = null;

    // フィールド値の取得
    const fieldValue = record[fieldCode].value;

    // 値が入力されている場合のみバリデーションを実行
    if (fieldValue) {
      if (!config.pattern.test(fieldValue)) {
        record[fieldCode].error = config.errorMessage;
      }
    }
  };

  // 複数フィールドのバリデーション実行
  const validateAllFields = (event) => {
    Object.keys(FIELD_CONFIGS).forEach(fieldKey => {
      validateField(event, fieldKey);
    });
  };

  // イベントリスナーの登録
  const registerEventListeners = () => {
    // 各フィールドの変更イベント
    Object.entries(FIELD_CONFIGS).forEach(([fieldKey, config]) => {
      const fieldCode = config.code;
      kintone.events.on([
        `app.record.create.change.${fieldCode}`,
        `app.record.edit.change.${fieldCode}`,
        `app.record.index.edit.change.${fieldCode}`
      ], (event) => {
        validateField(event, fieldKey);
        return event;
      });
    });

    // 追加・更新イベント
    kintone.events.on([
      'app.record.create.submit',
      'app.record.edit.submit',
      'app.record.index.edit.submit'
    ], (event) => {
      validateAllFields(event);
      return event;
    });
  };

  // イベントリスナーの登録を実行
  registerEventListeners();
})();

カスタマイズの適用手順

  • エディターにサンプルプログラムをコピーし、ファイル名を「sample.js」文字コードを「UTF-8」にして保存します。(ファイル名は任意)
  • 準備したアプリの設定画面で、保存したファイルを適用します。
    適用方法は次のヘルプページを参考にしてください。
    JavaScriptやCSSでアプリをカスタマイズする (External link)
  • アプリの設定を完了します。

使用したAPI

おわりに

本記事では、入力フィールドの値をチェックするカスタマイズ方法を紹介しました。
紹介したpatternはあくまで簡易的な定義です。
必要に応じて、より詳細なルールを設定することで、さらに強力な入力チェックを実現できます。
ぜひ試してみてください。

information

このTipsは、2025年8月版kintoneで動作を確認しています。