同条件でもプログラムが毎回同じ挙動をしない

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

現在,とあるアプリで”レコード新規作成時”,”レコード編集時”に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

 

カキ氷さま

 

ありがとうございます!

わかりやすいご説明のおかげで理解できました!