お世話になります。
レコードのフォームが縦長になるため、チェックボックス形式のフィールドを
二つ作り、どちら側でチェックを入れても内容が同期されるものにしたいです。
【A・B・C】(フィールドコードA)
上下で同期、どちらで編集を加えても内容が一緒
【A・B・C】(フィールドコートB)
片方のフィールドを変更しての値の変更は可能でしたが
もう一方のフィールドの値が編集不可になりました。
ご教授願います。
お世話になります。
レコードのフォームが縦長になるため、チェックボックス形式のフィールドを
二つ作り、どちら側でチェックを入れても内容が同期されるものにしたいです。
【A・B・C】(フィールドコードA)
上下で同期、どちらで編集を加えても内容が一緒
【A・B・C】(フィールドコートB)
片方のフィールドを変更しての値の変更は可能でしたが
もう一方のフィールドの値が編集不可になりました。
ご教授願います。
もう片方が編集不可、というのは読み取り専用状態になったという訳ではなく、片方の値を変更しても値が同期されない、ということでよろしいでしょうか?
(見る限り、「獲得材料」の値を編集した場合は想定通りの挙動で、「獲得材料2」の値を編集しても「獲得材料」の値になりそうな気がしますが)
if以下の中身が「獲得材料」の値を編集した場合のみの動作しか書かれていないためだと思います。
eventオブジェクトには、ドキュメントには記載されていませんが「type」というプロパティがあります。
event.typeにはkintone.events.onが実行されるトリガーとなった関数名が文字列で入っているので、('app.record.create.show’など)
返ってきた「app.record.edit.change.フィールドコード」から変更されたフィールドコードの値を取得し、
「獲得材料」の場合には「獲得材料2」の値を「獲得材料」、「獲得材料2」の場合には「獲得材料」の値を「獲得材料2」の値に置き換えるように追記する必要があると思います。
FM様
解決しました。ありがとうございます。
難しいので分けて書きました。すごく簡単な分ですがねんのため共有します。
(function(){
‘use strict’;
kintone.events.on(‘app.record.edit.change.A’, function(event){
var rec = event.record;
if(rec[‘A’].value != rec[‘B’].value ){
rec[‘B’].value = rec[‘A’].value ;
return event;
}
});
kintone.events.on(‘app.record.edit.change.B’, function(event){
var rec = event.record;
if(rec[‘B’].value != rec[‘A’].value ) {
rec[‘A’].value = rec[‘B’].value ;
return event;
}
});
})();