複数のチェックボックスで他フィールドの表示・非表示を設定

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

タイトルの件ですが、

チェックボックス1~3があり、3つの内、いずれかにチェックが付けば

文字列(1行)が表示するという仕様にしたいのですが、現在下記コードを

書いていますが、チェック3でしか反応しません。

kintone.events.on(events, function(event) {
    var record = event.record;
    var Cybozu = record['チェックボックス1']['value'];
    var Cybozu = record['チェックボックス2']['value'];
    var Cybozu = record['チェックボックス3']['value'];
    if (Cybozu.length === 0) {
        record['文字列1行']['value'] = "";
        kintone.app.record.setFieldShown('文字列1行', false);
        return event;
    }
    for (var i = 0; i < Cybozu.length; i++) {
        if (Cybozu[i] === 'チェックボックス1') {
            kintone.app.record.setFieldShown('文字列1行', true);
        }
        else if (Cybozu[i] === 'チェックボックス2') {
            kintone.app.record.setFieldShown('文字列1行', true);
        }
        else if (Cybozu[i] === 'チェックボックス3') {
            kintone.app.record.setFieldShown('文字列1行', true);
        }
    }
    return event;
});

訳があり、1つのチェックボックスの項目に1~3までを指定しておらず、

各チェックボックスの項目は1だけで指定しており、項目名はフィールドコード同じです。

お手数でございますが、ご確認お願い致します。

Naoさん

 

こんにちは。

変数名(Cybozu)を変更して、繰り返しをやめてifで分岐しました。おためしください。

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

 var record = event.record;
 var check1 = record['チェックボックス1']['value'];
 var check2 = record['チェックボックス2']['value'];
 var check3 = record['チェックボックス3']['value'];

 // いずれかにチェックがあればtrue
 if (check1 || check2 || check3) {
  kintone.app.record.setFieldShown('文字列1行', true);
 } else {
  kintone.app.record.setFieldShown('文字列1行', false);
 }
 return event;

});

カキ氷様

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

ご教授いただいたように書き換えたのですが、最初から文字列1行が表示され

どのチェックボックスをチェックしても変化がありませんでした。

(function () {
    "use strict";
    var events = [
        'app.record.detail.show',
        'app.record.create.show',
        'app.record.edit.show',
        'app.record.create.change.チェックボックス1',
        'app.record.edit.change.チェックボックス1',
        'app.record.create.change.チェックボックス2',
        'app.record.edit.change.チェックボックス2',
        'app.record.create.change.チェックボックス3',
        'app.record.edit.change.チェックボックス3'
    ];
    kintone.events.on(events, function(event) {
        var record = event.record;
        var check1 = record['チェックボックス1']['value'];
        var check2 = record['チェックボックス2']['value'];
        var check3 = record['チェックボックス3']['value'];
        if (check1 || check2 || check3) {
            kintone.app.record.setFieldShown('文字列1行', true);
        } else {
            kintone.app.record.setFieldShown('文字列1行', false);
            }
        return event;
    });
})();

コード全文ですと、上記のように書いていますが、何か間違いはありますでしょうか。

度々お手数でございますが、ご確認お願い致します。

 

Naoさん

 

すみません。if判定の部分抜けてました。

 

(function () {
 "use strict";
 var events = [
  'app.record.detail.show',
  'app.record.create.show',
  'app.record.edit.show',
  'app.record.create.change.チェックボックス1',
  'app.record.edit.change.チェックボックス1',
  'app.record.create.change.チェックボックス2',
  'app.record.edit.change.チェックボックス2',
  'app.record.create.change.チェックボックス3',
  'app.record.edit.change.チェックボックス3'
 ];
 kintone.events.on(events, function(event) {
  var record = event.record;
  var check1 = record['チェックボックス1']['value'];
  var check2 = record['チェックボックス2']['value'];
  var check3 = record['チェックボックス3']['value'];
  if (check1.length || check2.length || check3.length) {
   kintone.app.record.setFieldShown('文字列1行', true);
  } else {
   kintone.app.record.setFieldShown('文字列1行', false);
   }
  return event;
 });
})();

カキ氷様

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

if判定の部分を書き足しましたら、無事動作致しました。

今後ともよろしくお願いいたします。