自動でチェックボックスにチェックを入れて外したい、、

プログラミング初心者のものです。

以下画像のような数値フィールド①の値が2000以上の場合はチェックボックスの項目①にチェックし、数値フィールド②の値が5000以上の場合はチェックボックスの項目②にチェックする、というように自動でチェックのつけ外しをしたいのですが、躓いてしまいました。

つまずいた内容としては、「数値(2000以上)」の値が2000以上でチェックボックスの「2000以上の項目」と「その他①」にチェックが入っているときに、数値を2000未満に下げると「その他①」の項目のチェックが外れてしまいます。

↓の状態から

↓2000未満に下げると、「その他①」のチェックが外れてしまう。

以下自分で書いたコードなのですが、下から5行目の部分をsplice(1,1)にしてしまっているからそうなってしまうというのは分かっているのですが、別の方法が思いつかず投稿した次第です。

ご教授いただければと思います。

よろしくお願いします。

 

(function () {
‘use strict’;
var events = [‘app.record.create.change.数値①’, ‘app.record.edit.change.数値②’];
kintone.events.on(events, function (event) {

var record = event.record

if (record[‘数値①’][‘value’] >= 5000) {
record[‘チェックボックス’].value.push(‘5000以上の場合’);
}else if(record[‘数値①’][‘value’] < 5000){
record[‘チェックボックス’].value.shift()
}
return event;
});
})();

(function () {
‘use strict’;
var events = [‘app.record.create.change.数値②’, ‘app.record.edit.change.数値②’];
kintone.events.on(events, function (event) {

var record = event.record

if (record[‘数値②’][‘value’] >= 2000) {
record[‘チェックボックス’].value.push(‘2000以上の場合’);
}else if(record[‘数値②’][‘value’] < 2000){
record[‘チェックボックス’].value.splice(1.1)
}
return event;
});
})();

 

shiftやspliceは配列の位置を参照して動作するものなので、filterを使うと良いでしょう。

(function() {
'use strict';

var events = ['app.record.create.change.数値①', 'app.record.edit.change.数値②'];
kintone.events.on(events, function(event) {
var record = event.record;

if (record['数値①']['value'] >= 5000) {
record['チェックボックス'].value.push('5000以上の場合');
} else if(record['数値①']['value'] < 5000) {
record['チェックボックス'].value = record['チェックボックス'].value.filter(function(record) {
return record != '5000以上の場合';
});
}

return event;
});
})();

(function() {
'use strict';

var events = ['app.record.create.change.数値②', 'app.record.edit.change.数値②'];
kintone.events.on(events, function(event) {
var record = event.record;

if (record['数値②']['value'] >= 2000) {
record['チェックボックス'].value.push('2000以上の場合');
} else if(record['数値②']['value'] < 2000) {
record['チェックボックス'].value = record['チェックボックス'].value.filter(function(record) {
return record != '2000以上の場合';
});
}

return event;
});
})();

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