条件分岐でラジオボタンで初期値AからBにした時、いくつかのフィールドを編集制限をしているのですが、再びAにした時に編集制限していたフィールドを編集可能に戻すことは可能でしょうか?
こんにちは。
ラジオボタンの changeイベントで条件式を設定し、フィールド値に応じて
編集可/否を変更すれば、Aになった際に編集可能に戻すことが可能ですよ。
多分やりたい処理は以下のページで紹介されているので、
参考にして処理作成してみてもらえればと思います。
ko_ji様
ありがとうございます。
添付ページを参考にラジオボタン(フィールドコード:出欠)の出勤と休みで、ドロップダウン(フィールドコード:体調)の編集可否を試してみたのですが上手くいかず、下記条件式を確認していただけないでしょうか。ラジオボタンの初期値は出勤にしています。
(() => {
‘use strict’;
// ラジオボタンのイベントを取得
const rbEvents = [‘app.record.create.change.出欠’, ‘app.record.edit.change.出欠’];
kintone.events.on(rbEvents, (event) => {
const record = event.record;
// ラジオボタンの入力値チェック
if (record.出欠.value === "出勤") {
// ラジオボタンが"出勤"を選択している場合
record.体調.disabled = false;
} else {
// ラジオボタンが"休み"を選択している場合
record.体調.disabled = true;
}
return event;
})();
記載していただいたコードだと、kintone.events.on が閉じられていないので
エラーが発生するかと思います。
以下のようにすることで動くと思うので、動作確認してみてください。
(() => {
"use strict";
// ラジオボタンのイベントを取得
const rbEvents = [
"app.record.create.change.出欠",
"app.record.edit.change.出欠",
];
kintone.events.on(rbEvents, (event) => {
const record = event.record;
// ラジオボタンの入力値チェック
if (record.出欠.value === "出勤") {
// ラジオボタンが"出勤"を選択している場合
record.体調.disabled = false;
} else {
// ラジオボタンが"休み"を選択している場合
record.体調.disabled = true;
}
return event;
});
})();
なお、作成した処理が動かない場合には、どこかでエラーが発生していないか、
ご自身でデバッグして確認すると理解が深まるかと思いますよ
ko_ji様
ありがとうございます。
度々申し訳ございません。
記載していただいたもので試してみたのですが反応せず、
デジパックのコンソールを見ると、
Uncaught TypeError: Cannot read properties of undefined となっており、
if (record.出欠.value === “出勤”) { のところに赤い波線が出ておりました。
この場合はどのようにしたらいいでしょうか。
私の手元の環境ではエラーが発生しないので、
コードのコピペが正しくできていないのかなと思います。
今一度、正しくコードが記載できているかなど確認してみてください。
また、可能であれば発生しているエラーの画面キャプチャを取得し、
貼り付けていただけると確認しやすいです。
すみません。record.出欠 の value が存在しないエラーのようですが、
手元の環境で再現しないので原因が不明な状態です。。。
可能性として、ほかのカスタマイズと処理が競合していることが考えられるので、
他のカスタマイズを設定している場合、一時的にその他のカスタマイズを無効にして、
動作確かめてもらえますか?
上記で改善しない場合、現状の処理内容を貼り付けてもらえますでしょうか?
ko_ji様
出欠のラジオボタンと体調のフィールドををテーブルにして並べており、テーブルをやめたら反応するようになりました。こちらをテーブルでも反映することは可能でしょうか?
横から失礼します。
先にサブテーブルで動かしてることを記載していただいたほうが良かったですね。構造異なるので。
ko_jiさんのコードをベースで下記で動くかと思います。(解決したらベストアンサーko_jiさんにつけてください)
(() => {
"use strict";
// ラジオボタンのイベントを取得
const rbEvents = [
"app.record.create.change.出欠",
"app.record.edit.change.出欠",
];
kintone.events.on(rbEvents, (event) => {
// 変化したフィールドの行データ
const row =event.changes.row.value
// ラジオボタンの入力値チェック
if (row.出欠.value === "出勤") {
// ラジオボタンが"出勤"を選択している場合
row.体調.disabled = false;
} else {
// ラジオボタンが"休み"を選択している場合
row.体調.disabled = true;
}
return event;
});
})();
pomo様、ko_ji様
ありがとうございます。
通常の状態とテーブルで条件式が異なることを理解しておりませんでした。
無事にテーブルで反映させることができました。
この度はありがとうございました。
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。