日時フィールド

日時フィールドですが、日付部分は「選択を解除」で消せますが、時間はdeleteでも消せず、cmd+deleteでしか消せません。

皆様はどのように対応されていますでしょうか。

iOS環境ですね。当方でもiPadを使うため、どうしたものかと考えていました。
投稿を見てちょうどいい機会だと思い、クリアするボタンを自分で使う用に作ったので参考にして下さい。

※フィールド名が表示されていて、フィールド名=フィールドコードの場合のみ動作します。フィールド名とフィールドコードが違う場合は、対応するような連想配列が必要になります。こちらは普遍的な対応として作成したものなので、フィールド名を非表示にしている場合等はもう少し違うカスタマイズをする必要があります。

時刻フィールドと日時フィールド共に対応していますが、日時フィールドは日付を含めてクリアします(日付のみ入力された状態は内部的に0:00の時刻を持っているので、日時フィールドの時刻のみを削除といった動作は難しいようです)。

(() => {
  'use strict';

  kintone.events.on([
  'app.record.create.show', 'app.record.edit.show'
], (event) => {
  let record = event.record;

    [...document.getElementsByClassName('input-time-cybozu')].forEach((input) => {
    let button = document.createElement('button');

      button.style.height = '12px';
    button.style.width = '12px';
    button.style.border = 'none';
    button.style.backgroundImage = 'url(https://static.cybozu.com/contents/k/image/argo/form/userselect/remove.png)';
    button.style.backgroundRepeat = 'no-repeat';
    button.style.backgroundPosition = 'center center';
    button.style.backgroundColor = 'transparent';
    button.style.position = 'absolute';

      let parent = input.parentNode;
    let fieldName = parent.className === 'input-datetime-cybozu' ? parent.parentNode.previousElementSibling?.innerText: parent.previousElementSibling?.innerText;

      button.onclick = () => {
      let recordData = kintone.app.record.get(), rec = recordData.record;

      if (rec[fieldName]) rec[fieldName].value = '';

      kintone.app.record.set(recordData);
    };

    if (record[fieldName]) input.appendChild(button);
  });

  return event;
});
})();

mls-hashimotoさま

 

ご教授ありがとうございます。

同じ悩みだったのですね。大変助かりました。

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