チェックボックスの有無で日付入力を可・不可にしたい

チェックボックス(完了)にチェックをつけないと、完了日への入力ができないようにしたいです。

レコード追加画面表示時のコードを自分で考えたのですが、うまくいきませんでした。

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;
});

})();

お分かりの方がいましたら、ご教授頂けませんでしょうか。宜しくお願い致します。

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をクリアすると使えるようになりました。

お騒がせしてしまい申し訳ございませんでした。