チェックボックスを空にしたい

現在ラジオボタンで選んだグループに紐付いているチェックボックス郡を表示し、チェックを入れるプログラム部分を作成しています。

ラジオボタンで選んだグループのチェックボックスにチェックを入れ、別のグループをラジオボタンで選んだ場合、既にチェックボックスにチェックを入れているものがデータとして残ってしまっておりこれを空にしたいと考えております。

コミュニティなどを参考に作ってみましたが、うまく動作せず、また保存の際に「ほかのユーザーがレコードを更新した」とエラーが出る場合もあります。

行き詰まってしまったためご教示いただけると幸いです。

 

グループA~Dはチェックボックス郡

グループEのみサブテーブルになっています。

(function() {

    "use strict";

    var events1 = [

        'app.record.create.show',

        'app.record.create.change.該当部署',

        'app.record.edit.show',

        'app.record.edit.change.該当部署',

        'app.record.detail.show',

    ];

    kintone.events.on(events1, function(event) {

        /* フィールドの非表示をデフォルトにする */

        kintone.app.record.setFieldShown('案件内容_社', false);

        kintone.app.record.setFieldShown('案件内容_税', false);

        kintone.app.record.setFieldShown('案件内容_行', false);

        kintone.app.record.setFieldShown('案件内容_司', false);

        kintone.app.record.setFieldShown('案件内容_外', false);

        /* チェックボックスの値を取得 */

        var RadioVal = event.record['該当部署'].value;

        var check_array = [];

        var arr = ["案件内容_社", "案件内容_税", "案件内容_行", "案件内容_司", "案件内容_外"];

        var rec = event.record;

        var cnt = 0;

        var state = [];

        console.log(rec);

        /* 選択された数だけループさせる。*/

        switch( RadioVal ) {

            case '社' :

                kintone.app.record.setFieldShown('案件内容_社', true);

                break;

            case '税' :

                kintone.app.record.setFieldShown('案件内容_税', true);

                cnt = 1;

                break;

            case '行' :

                kintone.app.record.setFieldShown('案件内容_行', true);

                cnt = 2;

                break;

            case '司' :

                kintone.app.record.setFieldShown('案件内容_司', true);

                cnt = 3;

                break;

            case '外' :

                kintone.app.record.setFieldShown('案件内容_外', true);

                cnt = 4;

                break;

        }

        console.log("aq");

        kintone.events.on("app.record.edit.submit.success", function(event2){

            for( var i = 0; i < arr.length; i++ ){

                if( cnt == i ){

                    continue;

                }

                var matter = arr[i];

                rec[matter].value = [];

                return event2;

            }

        });

    });

})();

nishimura さん

多分あってるとは思うのですが、念のための確認です。
“案件内容_” 類 はチェックボックスのフィールドコード であってますよね?

でしたら、おそらく “app.record.edit.submit.success” でやってる処理を events1 のイベント内で実行することで希望の処理ができてるのではないかな~と思うのですが、いかがですか?

(function() {
  "use strict";
  var events1 = [
  'app.record.create.show',
  'app.record.create.change.該当部署',
  'app.record.edit.show',
  'app.record.edit.change.該当部署',
  'app.record.detail.show',
  ];
  kintone.events.on(events1, function(event) {
  ~省略~
  console.log("aq");

  for( var i = 0; i < arr.length; i++ ){

  if( cnt == i ){
  continue;
  }

    var matter = arr[i];
  rec[matter].value = [];
  }
return event;

  });
})();

ちなみにイベント内でのイベントは動きはするのですが、原則非推奨です。

しぶい 様

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

コード説明と実際のコードで文言に違いがあり、見辛くすみません。

ご認識の通り案件内容_"類"が各チェックボックスのフィールドコードです。

お教えいただいたコードにより、チェックボックスのチェックを外すことが出来ました。

ありがとうございます。

 

また、イベント内のイベントは非推奨とのことも了解いたしました。

ありがとうございました。

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