添付ファイル有無の判定をしたい

■実現したいこと
ドロップダウンの選択肢によって、添付ファイルの必須チェックを行いたい

■解決できないこと
実際にファイルを添付しても添付ファイルが無いことになってしまう

こちらのトピックを参考に作ったところ、必須チェック自体はできたのですが、
ファイルを添付しても必須チェックで添付無しと判断されてしまいました。

以下を参考に判定式を「record[‘添付ファイル’][‘value’].length === 0」に
変更してみても、添付無しの判定になってしまいました。

■コード

(() => {
  'use strict';

   const events = ['app.record.create.submit',
    'app.record.edit.submit'];

   kintone.events.on(events, (event) => {
     const record = event.record;

     // 添付ファイルのファイル名DOM要素の配列数取得
     var count1 = document.getElementsByClassName('1_uploadfile').length;

    if (record.ドロップダウン.value === '必須チェックあり') {
       // ファイル無し=配列数0の場合は添付ファイルフィールドにエラー表示
       if (count1 === 0) {
         record['1_uploadfile']['error'] = '添付ファイルを登録してください';
       }
     }
     return event;
   });

})();

ご助力いただけますと幸いです。

1 Like
document.getElementsByClassName('plupload_file_name').length;

のままにしてください。

document.getElementsByClassName('1_uploadfile').length;

にすると存在しないので、常に count1は 0になりまります。

1 Like

さっそくのご返信ありがとうございます。
ご指摘頂いた箇所を修正したところきちんと動くようになりました。

添付ファイルのチェックについてチェック箇所が2項目あるのですが、
その場合は、どのように宣言したら該当のチェックが出来るようになりますでしょうか…?

ドロップダウン=必須チェックあり の場合、
添付ファイルAが必須

ドロップダウン2=必須チェックあり の場合、
添付ファイルBが必須

のような動きを実現したいのですが、
ご返信いただいたとおり現在の記載だと添付ファイル数のカウントのため、
ドロップダウンに添付があれば、
ドロップダウン2で必須チェックを選択してても
チェックOKで登録できてしまいました。。

1 Like

読み取りできているか不安なのですが
添付ファイルフィールドが2つあるということですよね?

その場合、plupload_file_nameの上位class(クラス名は自身で解析してみてくださいデベロッパーツールを使います)が2つあるはずなので
一つ目、二つ目と区別して’plupload_file_name’の数を取得することになります。

ご回答いただきましてありがとうございます!

>添付ファイルフィールドが2つあるということですよね?
説明が分かりにくくて申し訳ありません。
ご推察通り、添付ファイルフィールドが2つあります。

アドバイス頂いたとおり上位classに書き換えたところ想定通りに動作できました!
お忙しいところ本当にありがとうございました。

(() => {
  'use strict';

   const events = ['app.record.create.submit',
    'app.record.edit.submit'];

   kintone.events.on(events, (event) => {
     const record = event.record;

     // 添付ファイルのファイル名DOM要素の配列数取得
     const className1 = ".field-xxxxxx"//
     const field1 = document.querySelector(className1);
     const count1 = field1.querySelectorAll(".plupload_file_name").length; //添付ファイル数

     const className2 = ".field-yyyyyy"//.
     const field2 = document.querySelector(className2);
     const count2 = field2.querySelectorAll(".plupload_file_name").length; //添付ファイル数

    if (record.ドロップダウン.value === '添付必須1') {
       // ファイル無し=配列数0の場合は添付ファイルフィールドにエラー表示
       if (count1 === 0) {
         record['1_uploadfile']['error'] = '添付ファイルを登録してください';
       }
     }

    if (record.ドロップダウン.value === '添付必須2') {
       // ファイル無し=配列数0の場合は添付ファイルフィールドにエラー表示
       if (count2 === 0) {
         record['2_uploadfile']['error'] = '添付ファイルを登録してください';
       }
     }

     return event;
   });

})();
1 Like

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。