いつもお世話になっております。
現在,とあるアプリで”レコード新規作成時”,”レコード編集時”にAというフィールドが空で,かつもう一つのフィールドが空だった場合エラーを吐き出すというプログラムを書いています。一応完成したのですが,ちゃんと稼働する時と稼働せずエラーを吐き出さずに保存できてしまうときがあります。
全く原因がわからず,困っております。
何かご存知な方からご意見をいただけますと幸いです。
よろしくお願いいたします。
下記,プログラムです。
(function() {
“use strict”;
// 保存ボタンをクリックしたとき(編集完了・新規作成)
kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function(event) {
//レコード一覧取得
var hako = event.record;
if(hako[‘innaimo’][‘value’] != undefined){
if(hako[‘mokinyu’][‘value’] == undefined){
window.alert(“名前を選択してください”);
hako[‘mokinyu’][‘error’] = ‘名前を選択してください’;
}
if(hako[‘status’][‘value’] == undefined){
window.alert(“ステータスを選択してください”);
hako[‘status’][‘error’] = ‘ステータスを選択してください’;
}
}
});//eventのおしまい
})();
Hiroさん
こんにちは。if分の判定でundefinedが正しく評価できていないのかもしれません。
あと return event; しないとせっかく’error’を設定したrecord情報が反映されずに正常動作として処理されてしまいます。
以下のコードで一度試してもらえますか。 (インデントが全角スペースなので半角スペースに置換してください)
(function() {
"use strict";
// 保存ボタンをクリックしたとき(編集完了・新規作成)
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
//レコード一覧取得
var hako = event.record;
if (hako['innaimo']['value']) {
if (!hako['mokinyu']['value']) {
window.alert("名前を選択してください");
hako['mokinyu']['error'] = '名前を選択してください';
}
if (!hako['status']['value']) {
window.alert("ステータスを選択してください");
hako['status']['error'] = 'ステータスを選択してください';
}
}
return event;
});
})();
カキ氷様へ
いつもお世話になっております。
迅速なコメントをいただきまことにありがとうございます。
return event を完全に失念しておりました…。
また,undefinedが正確に取れない可能性があるというのは初めて知りました。
大変勉強になりました。
誠にありがとうございます。
Hiroさん
>undefinedが正確に取れない可能性
補足しますと、今回のif文ではhako[‘mokinyu’][‘value’]がundefiedじゃなく、空文字"" だった場合にfalseとなるので、エラーの分岐に入っていなかったようです。
if(value == undefined){} // value が undefinedのときのみtrueで null、空文字"" の場合はfalse
if(!value){} // value が undefined、null、空文字""、0 の場合はtrueで それ以外はfalse