テーブル内にあるフィールドを条件によって入力の制限を行う

テーブル設定をする前までは下記のコードで組んでいましたがテーブル設定にしたところうまくいきません。

テーブル設定にしても同じように動作する方法を御教授お願い致します。

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

switch (record[‘A’][‘value’]){
case “B”:
record[‘E’][‘disabled’] = false;
record[‘F’][‘disabled’] = true;
break;
case “C”:
record[‘E’][‘disabled’] = false;
record[‘F’][‘disabled’] = true;
break;
case “D”:
record[‘E’][‘disabled’] = true;
record[‘F’][‘disabled’] = false;
break;
default:
record[‘E’][‘disabled’] = true;
record[‘F’][‘disabled’] = true;
break;
}
return event;
});

以下記事を参考にして頂くとよいかと思います。

https://developer.cybozu.io/hc/ja/community/posts/217841106-%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E7%B7%A8%E9%9B%86%E4%B8%8D%E5%8F%AF%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 
https://developer.cybozu.io/hc/ja/community/posts/360037905692-%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E7%B7%A8%E9%9B%86%E4%B8%8D%E5%8F%AF%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%9F%E3%81%84 

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

組みなおしてみたのですがうまくいかないのですがなにか原因をご教授して頂けると助かります。

 

(function() {
“use strict”;

var events = [‘app.record.edit.show’,
‘app.record.create.change.A’,
‘app.record.edit.change.A’];

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

var record = event.record;

if(record[‘A’][‘value’] === “B”){

record.精算項目.value[1].value.C.disabled = true,
record.精算項目.value[1].value.B.disabled = false;
}else{

record.精算項目.value[1].value.C.disabled = false,
record.精算項目.value[1].value.B.disabled = true;
}
return event;
});

})();

 

宜しくお願い致します。

> record.精算項目.value[1].value.C.disabled = true,

ですと、サブテーブルの2行目のみにしか反映されません。(1からではなく0から)
全行で反映したいのであれば、if内を以下のように記述する必要があります。

for(var i in record.精算項目.value){
record.精算項目.value[i].value.C.disabled = true;
record.精算項目.value[i].value.B.disabled = false;
}

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

自分が未熟なせいかやはりうまくいきません。

 

今現在下記のようにプログラムを組んでいるのですが気になる点などあればご教授して頂けると幸いです。

 

(function() {
“use strict”;

//振替のイベントを取得
var events = [‘app.record.create.show’,
‘app.record.edit.show’,
‘app.record.index.edit.show’,
‘app.record.edit.change.区分’,
‘app.record.create.change.区分’,
‘app.record.index.edit.change.区分’,
‘app.record.create.change.Table’,
‘app.record.edit.change.Table’];

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

var record = event.record;

//区間の入力値チェック
if(record[‘区間’][‘value’] === “往復”){

//区間が"往復"を選択している場合
/* record[‘片道’][‘disabled’] = true,
record[‘往復’][‘disabled’] = false;*/
for(var i in record.input_record.value){
record.精算項目.value[i].value.片道.disabled = true;
record.精算項目.value[i].value.往復.disabled = false;
}
}else{

//区間が"往路/復路"を選択している場合
/* record[‘片道’][‘disabled’] = false,
record[‘往復’][‘disabled’] = true;*/
for(var n in record.input_record.value){
record.精算項目.value[n].value.片道.disabled = false;
record.精算項目.value[n].value.往復.disabled = true;
}

}
return event;
});

})();

forのrecord.input_record.value は、record.精算項目.value だと思います。

うまくいかない、反応が無い、等の場合はエラーを吐いてる可能性があります。
以下の記事を参考にしてエラーの内容が確認出来ると、ご自身でも間違っている箇所が分かるようになると思います。

https://developer.cybozu.io/hc/ja/articles/207613916-%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84-%E3%81%9D%E3%82%93%E3%81%AA%E6%99%82%E3%81%AF%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-%E5%85%A5%E9%96%80%E7%B7%A8 

聞いてばかりではなく自分で理解していかないと上達しませんよね。

 

いろいろとありがとう御座いました。

とても助かりました。