特定のフィールドを除いてすべてdisabled = trueに変更する方法

皆様

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

 

特定の3つのフィールド_ 以外 _すべてdisabled = trueに設定したいのですが、

可能でしょうか。

 

現在は

var eventsType = ['app.record.create.show',
'app.record.edit.show'];

kintone.events.on(eventsType, function(e) {

var rec = e.record;

//ありとあらゆるフィールドを全てリストアップ
var fieldArr = [rec.User_Selection, rec.Department_Selection, .....

];

for(var j=0; j < fieldArr.length; j++){
fieldArr[j].disabled = true;
}

return e;

});

としており、不格好な上、フィールドをたまに

追加・変更したときにリストアップのし忘れが発生してしまっております。

お力添えいただけますと幸いです。

よろしくお願いいたします。

Object.keys(rec) で、レコードの要素(フィールドコード)を配列で取得できます。

これを使って、3つのフィールド以外を disabled してはいかがでしょうか?

なお type を判定して、入力フィールドのみ処理する判定が必要です。

rex0220様

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

var arr = Object.keys(rec);

を挿入すると確かにフィールドコードを取得できるのですが、こちらですとString型となり、

for(var i =0; i<arr.length;i++){
rec.arr[i].disabled = true;
}

for(var i =0; i<arr.length;i++){
"rec." + arr[i].disabled = true;
}

などでは動かないようなのですが、どのようにして頭に"rec."をつけるのでしょうか。

こんな感じで指定できます。あとは、3つのフィールドを除外してみてください。

テーブルも処理する場合は、テーブル処理の追加が必要です。

 

var types = ['SINGLE_LINE_TEXT','MULTI_LINE_TEXT','RICH_TEXT','NUMBER','DATE','DATETIME','TIME','DROP_DOWN','RADIO_BUTTON','CHECK_BOX','MULTI_SELECT','USER_SELECT','ORGANIZATION_SELECT','GROUP_SELECT','LINK','FILE'];
var arr = Object.keys(rec);
arr.forEach(function(fcode) {
if (types.indexOf(rec[fcode].type) >= 0) {
rec[fcode].disabled = true;
}
});

rex0220様

非常に丁寧にご指導くださいましてありがとうございました。おかげ様で解決することができました。