同一レコード内での条件付きフィールドコピー

同一レコード内にて、以下ができるようにしたいと思っています。

=====

フィールド

住所選択

郵便番号①(文字列ないし数値)

郵便番号②(文字列ないし数値)

郵便番号③(文字列ないし数値)

 

住所選択フィールドchange(レコード編集画面)のタイミングで

●住所選択が「自宅」の場合

→郵便番号①に郵便番号②と同じデータを入れる

●住所選択が「会社」の場合

→郵便番号①に郵便番号③と同じデータを入れる

=====

switch、if/case、kintone.app.redord.get/set()あたりを使えばできそうという認識で、

以下のような仕組みで考えています。

(function() {
var events = [‘app.record.create.change.住所選択’,//新規作成時
‘app.record.edit.change.住所選択’,//編集時
‘app.record.index.edit.change.住所選択’,//一覧での編集時
];

kintone.events.on(events, function (event) {
‘use strict’;
var record = event.record;
record[‘郵便番号①’][‘disabled’] = true;

// 住所選択に応じてコピー元を変更する。
if (record[‘住所選択’][‘value’] == “自宅”){
郵便番号①に郵便番号②の入力値をコピペ

} else if {

if (record[‘住所選択’][‘value’] == “会社”){

郵便番号①に郵便番号③の入力値をコピペ

} else {

record[‘郵便番号①’][‘value’] == “”;

}

return event;
});
})();

太字の部分 をどうすれば良いかが理解できていません。。

それとも、こんな単純な仕組みでは動かないのでしょうか?

 

初心者で、今までのスクリプトは見様見真似で、書きながら理解してきたのですが、

今回は1週間粘っても出口が見えなかったので、こちらで質問させていただきます。

 

どうぞよろしくお願いいたします。

ぷぅさん

こんにちは。ひよこです。

レコード詳細ページのレコード情報は、event.record に入っています。

参考

例えば、画面に表示されている 郵便番号2というフィールドコードの値は、

event.record.郵便番号2.value

で取得できます。
その値を利用して、他のフィールド(例:郵便番号1)に代入したい場合は

event.record.郵便番号1.value = event.record.郵便番号2.value;

とすると値を代入できます。
ただ、これだけだと画面には反映されないので、フィールドにセットしたら最後に return event すると、画面に反映されます。

参考

提示されているコードの場合、

record.郵便番号1.value = record.郵便番号2.value;

のようにすればOKです。

ちなみに、 record[‘郵便番号1’][‘value’]  という書き方と record.郵便番号1.value という書き方は同じことを指しています。 
ドット記法とブラケット記法:http://harakotan.hatenablog.jp/entry/2015/05/17/004707

 

あとは else if の書き方が違っているので、はじめようJavaScript第5回 JavaScriptの基本機能 条件分岐が書けるif文 その2 を参考にしてみてください。

ひよこ様

 

早速にありがとうございます。

試してみたところ、すんなりと動作しました!!

event.record.文字列.valueの使い方を正しく理解できていなかったのと、難しく考えすぎていたようです。

(そして、event内ではkintone.app.record.get()が使えない等、ちょっと理解が及ばず惑わされておりました。)

 

else if はコピペミスです、失礼しました。。

 

システム構築にあたり、かなり重要なスクリプトだったので、大変助かりました。

ありがとうございました!

 

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