0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

kintoneで時間表記の入力チェック

Last updated at Posted at 2021-11-06

kintoneの欠点

kintone上で時間表記で記録をしたい場合、何時何分から何時何分、という表記であれば時間入力のフォーマットを使えば済むのだが、経過時間を記録したい場合は、この時間表記というのは都合が悪い。しかも秒まで記載できない。従って、選択肢は単一行入力のSINGLE_LINE_TEXTしかないのだが、全員が全員書式通りに入れてくれるわけでもない、ということで、書式チェックのやり方。

前提

moment.jsを使うので読み込んでおく。

サンプル説明

日報に通話合計時間を「時分秒」の形式で入力させたい場合のチェック。kintoneの画面から入力された値を取得してきて、moment.jsでフォーマット、「isValid()」の形式でチェックして、falseであれば、メッセージを表示させる。

サンプル

sample.js
    // 通話時間の妥当性チェック
    if(record['通話時間']['value'] !== undefined){
      var telTime = moment(record['通話時間']['value'],'HH:mm:ss');
      if(!telTime.isValid()){
        swal({
          title: "入力不備(通話時間)",
          text: "HH:mm:ssの形式で入力してください。",
          icon: "error",
          button: "OK",
        });
        
        return false;
      }
    }

(追記)そもそもHH:MM:SSで入力してくれない

実運用を続けているうちに、そもそも、moment.jsでフォーマット出来る値なのかを先にチェックするべき、という判断に至った。性善説に頼りすぎると良くない。「:」(全角コロン)区切りとかでもisValid()は通ってしまう。

sample.js
    if(!isTime(record['通話時間']['value'])){
      swal({
        title: "入力不備(通話時間)",
        text: "HH:mm:ssの形式で入力してください。(全て半角入力)",
        icon: "error",
        button: "OK",
      });
      return false;
    }

sample.js
  // 時刻のフォーマットチェック
  function isTime(str){
    return str.match(/^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/) !== null;
  }

エラーメッセージの表示について

エラーメッセージの表示はsweetAlertを使用。別記事参照のこと。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?