新規投稿
フォローする

チェックボックス該当項目のエラー表示&リセットについて

いつもお世話になっております。

チェックボックス:sample2 を選んだら、「備考」が必須項目になるように設定したいですが、なんだか、以下の2通り設定してみましたが、どっちも実現できなくて・・・

①sample2 を選んだら、「備考」が必須項目になりますが、チェックを外しても「備考」の値はリセットされない・・・

(function () {
"use strict";
var events = [
'app.record.detail.show','app.record.create.show','app.record.edit.show',
'app.record.index.edit.submit','app.record.index.edit.show',
'app.record.index.edit.change.チェックボックス','app.record.create.change.チェックボックス','app.record.edit.change.チェックボックス',
];
kintone.events.on(events, function(event) {
var record = event.record;
var check = record['チェックボックス']['value'];

if (check.indexOf('sample2') != -1) {
kintone.app.record.setFieldShown('備考',true);
record['備考']['disabled'] = false;

}else{
kintone.app.record.setFieldShown('備考',false);
record.備考.value = "";//非選択時リセット
record['備考']['disabled'] = true;//非選択時入力不可
}

return event;
});
// エラーを表示する処理
var events2 = [
"app.record.index.edit.submit","app.record.create.submit","app.record.edit.submit",
 "app.record.edit.show","app.record.create.show","app.record.index.edit.show","app.record.detail.show",
"app.record.edit.change.チェックボックス" ,"app.record.create.change.チェックボックス" ,"app.record.index.edit.change.チェックボックス",
];
kintone.events.on(events2, function(event) {
var record = event.record;
var checkVa1 = record["チェックボックス"].value;
// 選択肢により必須表示

if ( !record["備考"].value ){
record["備考"].error = "必須項目!";
}
else{
record["備考"].error = null;
}

return event;
});

})();

 

sample2を選んだら、「備考」が必須項目になりますが、「備考」が編集不可になってしまう・・・

「備考」を編集不可にするのは:sample2を外したときのはずです。

どこが原因でしょうか?どなたかご指導いただけますでしょうか?どうぞよろしくお願い致します。

コード⇊

(function () {
"use strict";
var events = [
'app.record.detail.show','app.record.create.show','app.record.edit.show',
'app.record.index.edit.submit','app.record.index.edit.show',
'app.record.index.edit.change.チェックボックス','app.record.create.change.チェックボックス','app.record.edit.change.チェックボックス',
];
kintone.events.on(events, function(event) {
var record = event.record;
var check = record['チェックボックス']['value'];

if (check.indexOf('sample2') != -1) {
kintone.app.record.setFieldShown('備考',true);
record['備考']['disabled'] = false;
if ( !record["備考"].value ){
record["備考"].error = "必須項目!";
}
else{
record["備考"].error = null;
}

}else{
kintone.app.record.setFieldShown('備考',false);
record.備考.value = "";//非選択時リセット
record['備考']['disabled'] = true;//非選択時入力不可
}

return event;
});
})();
0

3件のコメント

Avatar
TK

https://developer.cybozu.io/hc/ja/articles/202166270#step6

こちら見ていただくと分かるんですが、

>ハンドラーが record オブジェクトのフィールドの error にエラーメッセージを代入して event オブジェクトを return した場合、 フォームの値の書き換えと編集可/不可の設定はキャンセルされ、フィールドにエラーメッセージが表示されます。

 

と、書いてますので今回のコード(上のほう)で言いますと event.error = null と record.備考.value = "";の部分が当てはまるのではと思います。

ですので、フォームの値を書き換えるときはエラーを返さないようにするしかないかと思います。

1
Avatar
Tomy

TK 様

いつも大変お世話になっております。

ずっとモヤモヤして、大変困っておりました。アドバイス頂き、本当にありがとうございます。

まだまだ知識不足で大変恐縮ではございますが、コードを以下にしてから、エラー出すのは難しいということでしょうか?どうすればよろしいでしょうか?お忙しいところ大変申し訳ございませんが、再度なにかアドバイス頂けたら幸いです。どうぞよろしくお願い致します。

(function () {
"use strict";
var events = [
'app.record.detail.show','app.record.create.show','app.record.edit.show',
'app.record.index.edit.submit','app.record.index.edit.show',
'app.record.index.edit.change.チェックボックス','app.record.create.change.チェックボックス','app.record.edit.change.チェックボックス',
];
kintone.events.on(events, function(event) {
var record = event.record;
var check = record['チェックボックス']['value'];

if (check.indexOf('sample2') != -1) {
kintone.app.record.setFieldShown('備考',true);
record['備考']['disabled'] = false;

}else{
kintone.app.record.setFieldShown('備考',false);
record.備考.value = "";//非選択時リセット
record['備考']['disabled'] = true;//非選択時入力不可
}

return event;
});


})();
0
Avatar
TK

チェックボックスのイベントでエラーを出して

備考のイベントでエラーを消す、みたいにすれば可能かと。

あとフィールドのdisabled は setFieldShownで消すなら不要かと思います。

(function() {
"use strict";
var events = [
"app.record.detail.show",
"app.record.create.show",
"app.record.edit.show",
"app.record.index.edit.submit",
"app.record.index.edit.show",
"app.record.index.edit.change.チェックボックス",
"app.record.create.change.チェックボックス",
"app.record.edit.change.チェックボックス"
];
kintone.events.on(events, function(event) {
var record = event.record;
var check = record["チェックボックス"]["value"];

if (check.indexOf("sample2") != -1) {
kintone.app.record.setFieldShown("備考", true);
// record["備考"]["disabled"] = false;
record.備考.error = "必須です";
} else {
kintone.app.record.setFieldShown("備考", false);
record.備考.value = ""; //非選択時リセット
// record["備考"]["disabled"] = true; //非選択時入力不可
}

return event;
});

kintone.events.on(["app.record.create.change.備考", "app.record.edit.change.備考"], function(event) {
var record = event.record;
if(record.備考.value) {
record.備考.error = null;
}

return event;
});
})();
0
ログインしてコメントを残してください。