mobile changeイベントで、validの判定

changeイベントで、時刻のフィールド4つの最小値を、別のフィールドに表示するカスタマイズを入れたいです。

モバイルのコントロールは、時、分のそれぞれにchangeイベントが発火し、時間だけ入力した場合、eventの入力値は、undifinedになって、他のフィールドの値を変えて、return eventを行うと、画面では入力値がクリアされてしまいます。

時間だけ、または分だけ入力した状態だと、画面では「時刻の形式が不正です」のメッセージがでているので、isValidの判定後、changeイベントが発生していると思いますが、changeイベント内で、時間だけ、または分だけの入力値か、isValidの判定を取得する方法はありますか?

ソース内の、

//ToDo    時:分ともクリアされた場合もundefinedになるが、その場合は、先のロジックを通したい

以下で、エラー値の場合は、returnするようにしたいです。
宜しくお願い致します。

(() => {
  'use strict';
  // 制御に利用するフィールドコード
  const leaveTimeFieldCode = '出発時刻1';
  const leaveTimeFieldCode2 = '出発時刻2';
  const leaveTimeFieldCode3 = '出発時刻3';
  const leaveTimeFieldCode4 = '出発時刻4';
  const returnTimeFieldCode = '帰社時刻1';
  const returnTimeFieldCode2 = '帰社時刻2';
  const returnTimeFieldCode3 = '帰社時刻3';
  const returnTimeFieldCode4 = '帰社時刻4';

  kintone.events.on([
    `mobile.app.record.create.change.${leaveTimeFieldCode}`,
    `mobile.app.record.create.change.${leaveTimeFieldCode2}`,
    `mobile.app.record.create.change.${leaveTimeFieldCode3}`,
    `mobile.app.record.create.change.${leaveTimeFieldCode4}`,
    `mobile.app.record.edit.change.${leaveTimeFieldCode}`,
    `mobile.app.record.edit.change.${leaveTimeFieldCode2}`,
    `mobile.app.record.edit.change.${leaveTimeFieldCode3}`,
    `mobile.app.record.edit.change.${leaveTimeFieldCode4}`
  ], (event) => {
    const record = event.record;

//changeイベントで、入力値がundefinedの場合は、return
//時間だけ、分だけ入力した時、値がクリアされるため
const eventType = event.type; // mobile.app.record.create(edit).change.フィールド名
const fieldIndex = eventType.lastIndexOf('.');
const eventField = eventType.substring(fieldIndex + 1); // changeイベントで変更された項目
const eventFieldValue = record[eventField].value;

//ToDo  時:分ともクリアされた場合もundefinedになるが、その場合は、先のロジックを通したい
if (eventFieldValue == undefined) return;

// 「出発時刻」最小値
const leaveTimeValues = [];
const leaveTimeVal1 = record[leaveTimeFieldCode].value;

if (leaveTimeVal1 !== undefined && leaveTimeVal1 !== "") {
  leaveTimeValues.push(leaveTimeVal1);
}
const leaveTimeVal2 = record[leaveTimeFieldCode2].value;
if (leaveTimeVal2 !== undefined && leaveTimeVal2 !== "") {
  leaveTimeValues.push(leaveTimeVal2);
}
const leaveTimeVal3 = record[leaveTimeFieldCode3].value;
if (leaveTimeVal3 !== undefined && leaveTimeVal3 !== "") {
  leaveTimeValues.push(leaveTimeVal3);
}
const leaveTimeVal4 = record[leaveTimeFieldCode4].value;
if (leaveTimeVal4 !== undefined && leaveTimeVal4 !== "") {
  leaveTimeValues.push(leaveTimeVal4);
}

if (leaveTimeValues.length == 0) {
  record.出発時刻最小.value = "";
} else {
  // 入力値
  const inputLeaveTime = record.出発時刻最小.value; 
  const minValue = leaveTimeValues.sort()[0];

  if (!inputLeaveTime) {
    //出発時刻未入力 ← 明細の最小値
    record.出発時刻最小.value = minValue;
  } else if (minValue < inputLeaveTime) {
    //明細の最小値 < 出発時刻 の場合、明細の最小値
    record.出発時刻最小.value = minValue;
  }
}

return event;
});
})();

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。