同一レコード内にて、以下ができるようにしたいと思っています。
=====
フィールド
住所選択
郵便番号①(文字列ないし数値)
郵便番号②(文字列ないし数値)
郵便番号③(文字列ないし数値)
住所選択フィールド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 はコピペミスです、失礼しました。。
システム構築にあたり、かなり重要なスクリプトだったので、大変助かりました。
ありがとうございました!
system
(system)
クローズされました:
4
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。