日付を入力すると他のフィールドに特定の文字を入力する

JavaScriptを始めたばかりのものです。

現在、隔週のメンテナンス記録用にアプリを利用しており、実施日の日付を入力&該当週にドロップダウンで「●」を入力するようにしています。

手動によるミスが多いため、日付を入力すると自動で該当週に「●」を付けられるようにしようと思っています。

レコード編集時や保存時に動けばいいかなと思い自分でもJavaScriptを書いては見たもののうまくいきません。おそらく見当違いで間違っていると思いますが…色々と調べながら記述したコードを記載しております。ご教示いただけますと幸いです。

レコードは

実施日=実施日

9月27日‐10月3日=R239

としています。

(function(){
“use strict”;

var event =[‘app.record.edit.submit’,‘app.record.create.submit’,‘app.record.index.edit.submit’] ;
kintone.events.on(events,function(event){
var record = event.record;

record[‘実施日’][‘disabled’]= true;
if(record[‘実施日’].value === [‘実施日’] >=1601132400 && [‘実施日’]<=1601737199)
{record[‘R239’].value = ‘●’ ;
}
else if (record[‘実施日’].value === [‘実施日’] >=1601737200 && [‘実施日’]<=1602341999)
{record[‘R240’].value= ‘●’;
}
return event;
});
})();

Jyunzoさん

 

私もJavascript 勉強中です。

2点修正すると動きそうだったので投稿します。

 

1)var eventをvar eventsに変更

2)日付の扱いでmoment.jsを使用する

 

moment.jsを使用するために、Cybozu CDNのmoment.jsをjavascript /CSSでカスタマイズの中でURLで指定して読み込ませます。

ちなみに今日現在の最新のURLは下記のようです。(元記事

https://js.cybozu.com/momentjs/2.27.0/moment.min.js
https://js.cybozu.com/momentjs/2.27.0/moment-with-locales.min.js

その後下記のようなJavascriptを読み込ませると、動くと思いましたが、いかがでしょうか。

moment.jsがメンテナンスモードで代替ライブラリへの移行が推奨されているようなので他のライブラリを使った方が良いのだろうか。。

(function () { "use strict";
    var events = ['app.record.edit.submit', 'app.record.create.submit', 'app.record.index.edit.submit'];
    kintone.events.on(events, function (event) {
        var record = event.record;

        // record['実施日']['disabled'] = true; 実施日を触りたかったので、ここはコメントアウトしました
        var report_date = moment(record['実施日'].value);

        //実施日が2020-09-27~2020-10-03の間なら、R239_checkはtrue、範囲外ならfalseが代入される
        var R239_check = moment(report_date).isBetween(moment("2020-09-27"), moment("2020-10-03"));

        //実施日が2020-09-27~2020-10-03の間ならR239は●
        if (R239_check == true) {
            record['R239'].value = '●';
        //実施日が2020-09-27~2020-10-03の範囲外ならば、undefinedにする
        } else {
            record['R239'].value = undefined;
        }
        return event;
    });
})();

Aiko Ymamoto 様

ご返信いただきありがとうございます。

 

moment.jsを利用したらいけるのですね。

実際に導入してみたところ、無事稼働しました。

 

元記事を拝見させていただいたところLuxonに移行を推奨(記事)しているようですね…

悩みどころです。まだまだ臨機応変に対応できないので熟読して勉強してみたいと思います。

 

ありがとうございます!