文字列フィールドA(フィールドコード:文字列a)が、「x」ならば数値フィールドB(フィールドコード:数値b)を「1」とする。
同様に文字列フィールドAが「y」なら数値フィールドBには「2」とする。
というif条件分岐(条件分岐は5つほど)作りたいのですが、具体的なJavaScriptの書き方を教えていただけないでしょうか。
(上記の場合、数値フィールドは自動更新フィールドのため、アクセス権で編集できないようにする予定です。)
Maru さん
例を3パターンほど。好みや条件内容によって、使い分けてください。
なお、アクセス権で編集不可にすると、JavaScript でも編集できなくなります。
このような場合は、フィールドの編集不可設定(disabled)を使います。
// if文
var record = event.record;
record['数値b']['disabled'] = true;
if (record['文字列a'].value === 'x')
record['数値b'].value = 1;
else if (record['文字列a'].value === 'y')
record['数値b'].value = 2;
else if (record['文字列a'].value === 'z')
record['数値b'].value = 3;
else
record['数値b'].value = '';
// switch文
var record = event.record;
record['数値b']['disabled'] = true;
switch (record['文字列a'].value) {
case 'x':
record['数値b'].value = 1;
break;
case 'y':
record['数値b'].value = 2;
break;
case 'z':
record['数値b'].value = 3;
break;
default:
record['数値b'].value = '';
break;
}
// object を使って判定
var record = event.record;
record['数値b']['disabled'] = true;
var ctl = { 'x': 1, 'y': 2, 'z': 3 };
if (Object.keys(ctl).indexOf(record['文字列a'].value) >= 0) {
record['数値b'].value = ctl[record['文字列a'].value];
}
else {
record['数値b'].value = '';
}
rex0220さん
いつもコメントにて勉強させていただいております!
具体的な記述方法を教えていただきありがとうございます。Javascriptにて記載をしておりますが、
下記のコードで反映されませんでした。記述に誤りがありそうでしたら教えていただけないでしょうか。
※文字列aは、ドロップダウンを使用しております。また、レコード追加画面やレコード詳細画面、一覧画面で文字列aが編集されたタイミングでそ
自動更新する際は「app.record.create.change.文字列a」を使用すれば良いですか?
恐れ入りますが、アドバイスいただけると幸いです。よろしくお願いします。
(function($) {
“use strict”;
kintone.events.on(“app.record.create.change.文字列a”, function(event) {
var record = event.record;
record[‘数値b’][‘disabled’] = true;
if (record[‘文字列a’].value === ‘x’)
record[‘数値b’].value = 1;
else if (record[‘文字列a’].value === ‘y’)
record[‘数値b’].value = 2;
else if (record[‘文字列a’].value === ‘z’)
record[‘数値b’].value = 3;
else
record[‘数値b’].value = ‘’;
});
})();
return event; で、変更内容が反映されます。
処理タイミングは、それぞれのイベントを指定します。
既存データがある場合も想定すると、編集画面表示時の処理も必要だと思います。
例:文字列aに初期値を設定している場合など。
あと、function($) の $ は、削除もれ? jQuery を指定していない場合は、いらないと思います。
(function() {
"use strict";
var events = [
"app.record.create.show", "app.record.edit.show", "app.record.index.edit.show",
"app.record.create.change.文字列a", "app.record.edit.change.文字列a", "app.record.index.edit.change.文字列a"
];
kintone.events.on(events, function(event) {
var record = event.record;
record['数値b']['disabled'] = true;
if (record['文字列a'].value === 'x')
record['数値b'].value = 1;
else if (record['文字列a'].value === 'y')
record['数値b'].value = 2;
else if (record['文字列a'].value === 'z')
record['数値b'].value = 3;
else
record['数値b'].value = '';
return event;
});
})();
rex0220さん
$は削除漏れでした…。編集画面表示時の件、アドバイスありがとうございます。
return event; を追加して無事にやりたいことができました
丁寧に解説付き&コードまで教えて頂きましてありがとうございました。