新規追加画面で非活性に出来ているものが編集画面だと出来ません。

お世話になります。

タイトルの件ですが

新規追加画面と編集画面表示時のイベントで同じ動作を行いたいです。

同じ動作というのは

サブテーブルを含む全てのフィールドを非活性にするということです。

下記ソースで新規追加画面では全てのフィールドが非活性なのですが

編集画面表示時の時にはサブテーブルのみ活性状態のままになってしまっています。

またソースについても、もっといいコーディングがあると思いますので、その辺りもアドバイスいただけたらと思います。。。

▼ソース


(function() {
‘use strict’;
kintone.events.on([‘app.record.create.show’,‘app.record.edit.show’], function(event) {

//レコードを取得する。
var record = event.record;

//「変更用パスワード」フィールドを非活性にする。
record[‘shohinKeyLookup’].disabled = true;
record[‘earningsCount’].disabled = true;
record[‘earningsPrice’].disabled = true;

for(var i in record[‘subTable’].value){
record[‘subTable’][‘value’][i][‘value’][‘subTablePrice’][‘disabled’] = true;
}
// record[‘subTable’].disabled = true;
// record[‘subTablePrice’].disabled = true;
return event;

});

})();


 

 

以上です。

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

こんにちは。内容を確認させていただきました!

こちらで確認したところ、掲載いただいたコードで問題なく編集画面でも非活性になることを確認しました。
(サブテーブルの部分のみ切り出してます)

(function() {
'use strict';
kintone.events.on(['app.record.create.show', 'app.record.edit.show'], function(event) {
var record = event.record;

for (var i in record.subTable.value) {
record.subTable.value[i].value.subTablePrice.disabled = true;
}

return event;
});
})();

お手数ですが、「動かない?そんな時はデバッグをしてみよう!入門編」などを参考に
エラーが出ていないか確認できますでしょうか?
私が動作確認したブラウザは Chrome です。

ちなみに、コード的な部分で言うと、for in 文はあまり使用されていない気がします。
そもそも、for in 文はオブジェクトのプロパティを取得するものであり、
配列を処理するのにはあまり向いていないかもしれません。

以下のように、for 文または forEach 文がよく見る書き方かなと思います。

// for 文
for (var i = 0; i < record.subTable.value.length; i++) {
record.subTable.value[i].value.subTablePrice.disabled = true;
}

// forEach 文
record.subTable.value.forEach(function(table) {
table.value.subTablePrice.disabled = true;
});

ご参考までに!

y_jediさん

 

お返事ありがとうございます!

わざわざ動作確認までありがとうございます。

ソースはおかしくない可能性が高いということですね。。。

 

再度デバッグなどで確認してみます!

コードのアドバイスもありがとうございます!