見出し画像

【kintone】日付フィールドの未入力を判定する

kintone(キントーン)の標準機能でできないところをJavaScriptやCSSを使って実現しています。今回は日付フィールドに入力がない時に値を判定する方法です。

■ フィールド定義

日付フィールドを設定します

画像2

画像3

■ 日付フィールドの値を削除する

日付が入力されている日付フィールドをカレンダーから「選択を解除」または「DELETEキー」で値を削除します。「保存ボタン」を押した後、JavaScriptで日付フィールドの未入力チェックをしたり、値を判定して他のアプリを更新したりする際に「入力なし」の場合の判定が上手くいかなかったのでデバッグしてみました。

画像4

■ 取得のタイミングで値が異なる

日付フィールドが未入力の場合、保存実行前(保存ボタンクリック時)と保存成功後では、日付フィールドの値が異なるようです。

◎ 保存実行前「undefined」
Firefoxのデバッガーで値を確認

画像5

支払日には「undefined」が入っているので、以下のコードでalertが表示されます。

if ((record['due_date']['value'] === undefined) ||
   (record['due_date']['value'].length <= 0)) {
 alert('保存実行前:支払日の入力なし');
}

保存成功後「null」
Firefoxのデバッガーで値を確認

画像6

支払日には「null」が入っているので、以下のコードでalertが表示されます。

if ((record['due_date']['value'] === undefined) ||
   (record['due_date']['value'] === null) ||
   (record['due_date']['value'].length <= 0)) {
 alert('保存成功後:支払日の入力なし');
}

■ nullの判定をしなかった場合

保存成功後の処理で「null」の判定をしなかった場合はエラーになります。

TypeError: record.due_date.value is null

■ JavaScript サンプルコード

保存実行前(保存ボタンクリック時)と保存成功後で、日付フィールドの入力あり・入力なしが正しく判定されているかを確認するためのコードです。

(function() {
"use strict";

/*
* 登録画面・編集画面・一覧画面/保存ボタンクリック時
*/
function editSubmit(event) {

 // レコード取得
 var record = event.record;

 // 支払日が未入力の時
 if ((record['due_date']['value'] === undefined) ||
     (record['due_date']['value'].length <= 0)) {
   alert('保存実行前:支払日の入力なし');
 } else {
   alert('保存実行前:支払日の入力あり');
 }

 return event;
}

/*
* 登録画面・編集画面・一覧画面/保存成功後
*/
function editSubmitSuccess(event) {

 // レコード取得
 var record = event.record;

// 支払日が未入力の時
 if ((record['due_date']['value'] === undefined) || 
     (record['due_date']['value'] === null) ||
     (record['due_date']['value'].length <= 0)) {
   alert('保存成功後:支払日の入力なし');
 } else {
   alert('保存成功後:支払日の入力あり');
 }

 return event;
}

/* ------------------------------------------------------------------ */

// 登録画面・編集画面・一覧画面/保存ボタンクリック時
kintone.events.on(['app.record.create.submit',
                  'app.record.edit.submit',
                  'app.record.index.edit.submit'], editSubmit);


// 登録画面・編集画面・一覧画面/保存成功後
kintone.events.on(['app.record.create.submit.success',
                  'app.record.edit.submit.success',
                  'app.record.index.edit.submit.success'], editSubmitSuccess);

})();


この記事が気に入ったらサポートをしてみませんか?