チェックボックス(完了)にチェックをつけないと、完了日への入力ができないようにしたいです。
レコード追加画面表示時のコードを自分で考えたのですが、うまくいきませんでした。
kintone.events.on('app.record.create.show, function(event) {
var record = event.record;
//日付フィールドを編集不可にする。
record['日付']['disable'] = true;
return event;
});
また、レコードの追加・編集時、チェックボックスの変更があった場合、完了日の入力ができないようにすることは叶ったのですが、disableの値が逆のような気がして腑に落ちないのです。
(function() {
"use strict";
//チェックボックスのイベントを取得
var events1 = ['app.record.create.change.チェックボックス', 'app.record.edit.change.チェックボックス'];
kintone.events.on(events1, function(event) {
var record = event['record'];
//チェックボックスの入力値チェック
if (record['チェックボックス']['value'][0] === "完了") {
//チェックなしの場合は"日付"を無効にする
record['日付']['disabled'] = false;
}else {
//チェックありの場合は"日付"を有効にする
record['日付']['disabled'] = true;
}
return event;
});
})();
お分かりの方がいましたら、ご教授頂けませんでしょうか。宜しくお願い致します。
3件のコメント
sunshineさん、こんにちは。プロジェクト・アスノートの松田です。
レコードオブジェクトの扱い
イベントのドキュメントを再確認してみてください。
recordオブジェクトには、イベント発生時点のユーザー入力のデータを保持したレコードオブジェクト、
つまり、changeイベントが発声した時点であれば、変更前の値ということです。
フィールド値を変更したときの、変更後の値は、changes というオブジェクトに入っています。
今回のチェックボックスの判定はこちらで行う必要がありますね。
※今の書き方であれば、
チェックボックスを操作する直前の値で判定されたことが、操作したタイミングで起こる、という動きになっています。なので、true/falseが逆のように見えています。
松田様
ご教授ありがとうございます。まだまだ勉強不足で申し訳ございません。
kintone.events.on('app.record.create.show, function(event) {
var record = event.record;
//日付フィールドを編集不可にする。
record['日付']['disable'] = true;
return event;
});
上記がうまくいかないのは'app.record.create.show の後にフィードを指定指定いないからでしょうか。
度々のご質問になり申し訳ございませんが、ご教授頂ければ幸いです。
松田様
こちらはブラウザ側の問題でした。
cookieをクリアすると使えるようになりました。
お騒がせしてしまい申し訳ございませんでした。