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を使用。別記事参照のこと。