テーブル初期値の設定と行の追加削除の制限

お世話になります。

テーブルへの初期値の設定とあわせて

初期値で挿入されたテーブル行へ、追加・削除ボタンが表示されないようにしたいです。 

以下を参考に試しましたが、

テーブルへの初期値は入るのですがボタン制御が一行目のみにしか反映されません。

レコード追加時にテーブルへ初期値を入れる

サブテーブルの追加削除を制限したい

初期値が設定されたすべての行にボタン制御を反映させるには

どのようにすればよいでしょうか?

(function(){
 'use strict';

 kintone.events.on('app.record.create.show', function(event){
 var record = event.record;

 //行の作成
 var newRow1 = createValue_('1','テスト');
 var newRow2 = createValue_('2','テスト');
 var newRow3 = createValue_('3','テスト');

 //テーブルに初期値を定義する
 record.テーブル.value = [
 newRow1,
 newRow2,
 newRow3
 ];

 if(record.編集.value === "不可"){
 for(var i in record.テーブル.value){
 record.テーブル.value[i].value.項番.disabled = true;
 record.テーブル.value[i].value.項目.disabled = true;
 }
 }
 [].forEach.call(document.getElementsByClassName("subtable-operation-gaia"), function(button){
 button.style.display = 'none';
 });
 document.getElementsByClassName("subtable-operation-gaia")[0].style.display = "";

 return event;
 });

 function createValue_(number,text){
 return{
 'value':{
  '項番':{
  'type': 'NUMBER',
  'value': number
  },
  '項目':{
  'type': 'MULTI_LINE_TEXT',
  'value': text
  },
  '自己チェック':{
  'type': 'RADIO_BUTTON',
  'value': ""
  },
  '上司チェック':{
  'type': 'RADIO_BUTTON',
  'value': ""
  }
 }
 };
}
})();

 

[].forEach.call(document.getElementsByClassName("subtable-operation-gaia"), function(button){
button.style.display = 'none';
});
document.getElementsByClassName("subtable-operation-gaia")[0].style.display = "";

このあたりが怪しいですね。

[0]とか

document.getElementsByClassName("subtable-operation-gaia")[0].style.display ="";

この一行を削除しても同様の動作です。

return event;のあとに

テーブルの初期値が入るため、一行目しか影響されないのでしょうか。。

コードに詳しくないため、

[].forEach.call(document.getElementsByClassName("subtable-operation-gaia"),function(button){
button.style.display ='none';

こちらがどのような指示を出しているのか理解できておりませんが。。

ちなみに、編集時のイベントではすべての行が制御できており、レコード追加時のイベントでのみうまくできてません。

debugger

を入力して実行してみました。

おっしゃるとおり return eventの直前では、1行目しか表示されておらず、ボタンも1行目しか消えないようです。

となると、一旦行を増やす処理をしてから、ボタンを消すということになりますね。

async/awaitの出番とするか、submit時にチェックするか?

haradaさま

回答いただきましてありがとうございます!

となると、一旦行を増やす処理をしてから、ボタンを消すということになりますね。

async/awaitの出番とするか、submit時にチェックするか?

こちらは、私では作業困難と思われるため、submitではなく

別フィールドのchengeイベントにて動作するように変更しました。

少々気持ち悪い感じですが、、一旦諦めます。

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

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