新規投稿
フォローする

テキストボックスが未入力or空白文字の場合にエラーチェックしたい

コンボボックス(休暇区分)の選択肢により、テキストボックス(事由)の未入力チェックをレコード保存時に行いたいと考えています。

以下のスクリプトを作成したのですが正しく動作しません。どこが原因なのかご教授いただけますようお願い致します。

 

(function () {
 
    "use strict";
 
    // レコードの保存前に未入力チェックします
    function checkValue(event){
        var rec = event['record'];
 var valkyukakbn = rec['休暇区分']['value'];
 var valjiyu = rec['事由']['value'];
 //入力された空白文字を削除
 var valjiyu2 = valjiyu.replace(/\s+/g, "");

 if(valkyukakbn != "01:年次有給休暇" && valkyukakbn != "16:年次有給休暇(時間)"){
  if(valjiyu == null || valjiyu2.length == 0){
   rec['事由']['error'] = '事由を入力してください';
   alert("事由を入力してください!");
  }
 }

        // event を return します。
        // エラーが有る場合は、保存はキャンセルされ、詳細画面にエラーが表示されます。
        // エラーがない場合は、保存が実行されます。
        return event;
 
    }
 
    // 登録・更新イベント(新規レコード、編集レコード、一覧上の編集レコード)
    kintone.events.on(['app.record.create.submit',
                       'app.record.edit.submit',
                       'app.record.index.edit.submit'], checkValue);
 
})();
0

4件のコメント

Avatar
武井 琢治

マツさん

 

見たところ、事由が未入力の場合、

valjiyu変数がundefinedになり、replaceした際にjsが落ちてしまっているようです。

 

valjiyuの宣言行について、

 var valjiyu = rec['事由']['value'] || "";

のようにすれば、想定通りの挙動になるのではないでしょうか。

1
Avatar
マツ

武井さん

ご連絡が遅くなりすみません。

ご指摘いただきました通りに記述すると正常に動作しました。

ありがとうございました。

ところで、宣言行の後ろの部分 || "" が加わるとどのような挙動になるのでしょうか?

低レベルの質問で申し訳ございません。。。

 

0
Avatar
武井 琢治

マツさん
|| ""の前の値がない場合は空文字を代入するため、
JSが落ちないようになります。

2
Avatar
マツ

武井さん

ご説明ありがとうございました。

非常に助かりました。

0
サインインしてコメントを残してください。