新規投稿
フォローする

ラジオボタンの選択と自動入力

お世話になっております。

「終了日(日付フィールド)」に日付を入力すると、自動で「進捗状況(ラジオボタン)」が”完了済”になるように変更しようと思いコードを書きました。

「進捗管理」のラジオボタンの項目は、”未着手”と”作業中”と”完了済”です。

「終了日」に日付を入力すると、「進捗状況」を自動で”完了済”に、空欄の場合はユーザーが選択した項目にしたいです。

以下のコードだと、「終了日」が空欄で、”作業中”か”未着手”を選択しても、勝手に”完了済”になってしまいます。

ご教示いただけないでしょか。

(function() {
   "use strict";
   var events = ['app.record.edit.submit','app.record.create.submit','app.record.index.edit.submit',
                 'app.record.create.change.進捗状況','app.record.edit.進捗状況',
                 'app.record.create.change.終了日','app.record.edit.終了日'];
   kintone.events.on(events, function(event) {
       var record = event.record;
       //要素取得
       var process = record['進捗状況']['value'];
       var endday = record['終了日']['value'];
      
       if (record['終了日']['value'] !== "") {
           process = "完了済";
       }else {
           process = "";
       }
      
       record['進捗状況']['value'] = process;  
       
           return event;
          
   });
})();
0

2件のコメント

Avatar
ひよこ

natsuki さん

こんにちは。ひよこです。

「終了日」が空欄のときの record['終了日']['value'] は undefined が返ってきます。
(console.log(endday); して開発者ツールのコンソールで確認してみてください)
undefined は '' ではないため、

if (record['終了日']['value'] !== "") {
  process = "完了済";
}

に必ず当てはまります。
また、process = '' とすると、終了日が空の場合は必ず初期化されてしまう(=未着手)になるので、選択された値を使ったほうが良いと思います。

こうやって書くと、期待通りの動きになるのでは?と思うのですが、いかがでしょうか。

var process = record['進捗状況']['value'];
var endday = record['終了日']['value'];
if (record['終了日']['value']) { // 値が設定されている場合
  process = "完了済";
}
record['進捗状況']['value'] = process;
1
Avatar
natsuki

ひよこ 様

迅速なご回答ありがとうございます。

早速教えていただいたコードを試したところ、無事期待通りの動作をしました。

非常に助かりました。ありがとうございます。

0
ログインしてコメントを残してください。