# 日付項目をif文条件に使うと正しく動かない件について

**URL:** <https://community.cybozu.dev/t/topic/8537>\
**Category:** kintone 開発相談\
**Created:** [2024 年 1 月 5 日午前 8:29 UTC](https://community.cybozu.dev/t/topic/8537 "2024-01-05T08:29:00Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![kai](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@kai](https://community.cybozu.dev/u/kai)\
**Post date:** [2024 年 1 月 5 日午前 8:29 UTC](https://community.cybozu.dev/t/topic/8537/1 "2024-01-05T08:29:00Z")

</div>

お世話になっております。  
if文の条件が正しく動かない場合があり、ご存知の方はご教授よろしくお願いいたします。

record[“フィールドコード”].value;で取得し変数に格納済み  
【項目の詳細】  
・DiagnosisResult：ドロップダウン項目  
・CP\_CorrectivePlanExistense：ドロップダウン項目  
・CorrectiveEndDate：日付項目

上記の日付項目が未入力の場合、「undefined」で帰ってくるので条件に使用していますが日付項目が入力済みの場合で値が入っている状態でもundefinedのif文を通過してしまう場合がありますが原因がわかりません

```javascript
if (DiagnosisResult == '脆弱性なし' && CP_CorrectivePlanExistense == undefined && !(CorrectiveEndDate == undefined)) {
// if (DiagnosisResult == conditionsLabel3 && CP_CorrectivePlanExistense == undefined && CorrectiveEndDate != undefined) {

      event.record.CorrectiveEndDate.error = '「日付」' + errorLabel1; //是正終了予定日
      event.error = '是正計画グループ内にある「是正終了予定日」' + errorLabel1;
                console.log('P9_No5');

        }

```

---

<div class="post-metadata">

**Author:** ![pomo](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/pomo/32/465_2.png) [@pomo](https://community.cybozu.dev/u/pomo)\
**Post date:** [2024 年 1 月 6 日午前 12:26 UTC](https://community.cybozu.dev/t/topic/8537/2 "2024-01-06T00:26:51Z")

</div>

if文で== を3つ使用してますが、===（厳密等価演算子）に置き換えてみてはいかがでしょうか？

---

<div class="post-metadata">

**Author:** ![kai](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@kai](https://community.cybozu.dev/u/kai)\
**Post date:** [2024 年 1 月 9 日午前 2:45 UTC](https://community.cybozu.dev/t/topic/8537/3 "2024-01-09T02:45:29Z")

</div>

上記を試してみましたがそれでもだめでした

---

<div class="post-metadata">

**Author:** ![pomo](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/pomo/32/465_2.png) [@pomo](https://community.cybozu.dev/u/pomo)\
**Post date:** [2024 年 1 月 12 日午前 7:15 UTC](https://community.cybozu.dev/t/topic/8537/4 "2024-01-12T07:15:01Z")

</div>

イベント発生タイミングが不明ですので保存のタイミングと仮定して、

```javascript
(() => {
    kintone.events.on([
      `app.record.create.submit`,
      `app.record.edit.submit`,
    ],
      function (event) {
        const field1 = "DiagnosisResultのフィールドコード"
        const field2 = "CP_CorrectivePlanExistenseのフィールドコード"
        const field3 = "CorrectiveEndDateのフィールドコード"

        const record = event.record
        const DiagnosisResult = record[field1].value
        const CP_CorrectivePlanExistense = record[field2].value
        const CorrectiveEndDate = record[field3].value

        const errorLabel1 = "エラーです"

        // 脆弱性なし、かつCP_CorrectivePlanExistenseとCorrectiveEndDateがundefinedのとき
        if (DiagnosisResult === '脆弱性なし' && !CP_CorrectivePlanExistense && !CorrectiveEndDate) {
          event.record[field2].error = '「日付」' + errorLabel1; //是正終了予定日
          event.error = '是正計画グループ内にある「是正終了予定日」' + errorLabel1;
          console.log('P9_No5');
        }

        return event;
      });
  })()

```

上記でif文は全ての条件が達成したときにerrorに入りますが、この辺りの望んでいる条件があまり理解できてないので、  
もし、日付がundefiendの場合だけでもerrorに入れたい場合は前二つ両方をくくって、1つ目の条件か2つ目の条件どちらかがtrueの場合としてerrorに入ってあげる等条件を適切に変更してください。

```javascript
if ((DiagnosisResult === '脆弱性なし' && !CP_CorrectivePlanExistense) || !CorrectiveEndDate)｛
～～～～
｝

```

---

<div class="post-metadata">

**Author:** ![kai](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@kai](https://community.cybozu.dev/u/kai)\
**Post date:** [2024 年 1 月 15 日午前 1:47 UTC](https://community.cybozu.dev/t/topic/8537/5 "2024-01-15T01:47:39Z")

</div>

pomo様  
上記のソースを参考に試したところうまく動きました。  
ありがとうございました。
