# 添付ファイルの複数添付チェック

**URL:** <https://community.cybozu.dev/t/topic/7866>\
**Category:** kintone 開発相談\
**Created:** [2023 年 7 月 27 日午前 3:05 UTC](https://community.cybozu.dev/t/topic/7866 "2023-07-27T03:05:33Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Buser](https://avatars.discourse-cdn.com/v4/letter/b/58f4c7/32.png) [@Buser](https://community.cybozu.dev/u/Buser)\
**Post date:** [2023 年 7 月 27 日午前 3:05 UTC](https://community.cybozu.dev/t/topic/7866/1 "2023-07-27T03:05:33Z")

</div>

項目選択(ラジオボタン)にA、B、Cとあり、添付フィールドが甲、乙とあるときに  
A選択時は甲、乙をチェックし、B選択時は甲のみ、C選択時は乙のみをチェック対象とし  
添付されていないときはエラーを出し保存させないようにしたいです。

(function () {  
“use strict”;  
kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function (event) {  
var record = event.record;  
var attachmentOption = record[‘項目選択’].value;  
if (attachmentOption === ‘A’) {  
var 甲 = document.getElementsByClassName(‘plupload\_file\_name’).length;  
if (甲 === 0) {  
event.error = ‘エラーメッセージ’;  
return event;  
}  
}  
if (attachmentOption === ‘B’) {  
var 甲1 = document.getElementsByClassName(‘plupload\_file\_name’).length;  
if (甲1 === 0) {  
event.error = ‘エラーメッセージ’;  
return event;  
}  
}  
if (attachmentOption === ‘C’) {  
var 乙1 = document.getElementsByClassName(‘plupload\_file\_name’).length;  
if (乙1 === 0) {  
event.error = ‘エラーメッセージ’;  
return event;  
}  
}  
return event;  
});  
})();

このコードで、BとCを選択した時は正しくエラーメッセージを出すことができました。  
その後色々コードを書いてみたのですが、Aを選択した際、甲の添付ファイルチェックは正しくできるのですが、どうしても乙のチェックを行うことができません。  
添付箇所が二か所あるとき、上記のコードをどのように書けば実現できますでしょうか。

宜しくお願い致します。

---

<div class="post-metadata">

**Author:** ![mls-hashimoto](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/mls-hashimoto/32/34_2.png) [@mls-hashimoto](https://community.cybozu.dev/u/mls-hashimoto)\
**Post date:** [2023 年 7 月 27 日午前 3:47 UTC](https://community.cybozu.dev/t/topic/7866/2 "2023-07-27T03:47:39Z")

</div>

```javascript
	event.error = 'エラーメッセージ';
	return event;

```

return eventは「eventの変更内容を反映して処理を終了（後続の処理は実行しない）」なので、if文内には必要ありません（最後のreturn eventだけで良いです）。

---

<div class="post-metadata">

**Author:** ![Buser](https://avatars.discourse-cdn.com/v4/letter/b/58f4c7/32.png) [@Buser](https://community.cybozu.dev/u/Buser)\
**Post date:** [2023 年 7 月 27 日午前 3:56 UTC](https://community.cybozu.dev/t/topic/7866/3 "2023-07-27T03:56:35Z")

</div>

コード修正コメントありがとうございます。

複数添付した場合のチェックについてはいかがでしょうか。

---

<div class="post-metadata">

**Author:** ![mls-hashimoto](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/mls-hashimoto/32/34_2.png) [@mls-hashimoto](https://community.cybozu.dev/u/mls-hashimoto)\
**Post date:** [2023 年 7 月 27 日午前 4:48 UTC](https://community.cybozu.dev/t/topic/7866/4 "2023-07-27T04:48:38Z")

</div>

> A選択時は甲、乙をチェックし、B選択時は甲のみ、C選択時は乙のみをチェック対象とし  
> 添付されていないときはエラー

早とちりして見落としていました。こういった条件であれば、

```javascript
var 甲 = document.getElementsByClassName(‘plupload_file_name’).length;
var 乙1 = document.getElementsByClassName(‘plupload_file_name’).length;

if (attachmentOption === 'A') {
  if (甲 === 0) event.error = 'エラーメッセージ';
  if (乙1 === 0) event.error = 'エラーメッセージ';
} else if (attachmentOption === 'B') {
  if (甲 === 0) event.error = 'エラーメッセージ';
} else if (attachmentOption === 'C') {
  if (乙1 === 0) event.error = 'エラーメッセージ';
}

return event;

```

こうやって地道に書いていくしかありません。記述量を少なくするのであればエラーチェックとエラーを出す処理を関数にして呼び出す方法でも可能です。

---

<div class="post-metadata">

**Author:** ![Buser](https://avatars.discourse-cdn.com/v4/letter/b/58f4c7/32.png) [@Buser](https://community.cybozu.dev/u/Buser)\
**Post date:** [2023 年 7 月 27 日午前 5:24 UTC](https://community.cybozu.dev/t/topic/7866/5 "2023-07-27T05:24:45Z")

</div>

var 甲 = document.getElementsByClassName(‘plupload\_file\_name’).length;  
var 乙1 = document.getElementsByClassName(‘plupload\_file\_name’).length;

この部分なのですが、甲、乙それぞれに添付して保存しようとした時のコンソールログを見てみると  
甲２つ付いているような感じになり、乙には添付がないという感じになっています。

A：甲の値: 2  
A：乙の値: 0

この部分で引っかかっています。

---

<div class="post-metadata">

**Author:** ![sumiren](https://avatars.discourse-cdn.com/v4/letter/s/f1d935/32.png) [@sumiren](https://community.cybozu.dev/u/sumiren)\
**Post date:** [2023 年 7 月 27 日午前 5:48 UTC](https://community.cybozu.dev/t/topic/7866/7 "2023-07-27T05:48:46Z")

</div>

こんにちは。  
添付ファイルのフィールドが2か所あるかと思うので  
何番目の添付ファイルのフィールドをチェックするのかいれてあげたらいいんじゃないかなと思います。

```javascript
(function() {
  'use strict';
  kintone.events.on(['app.record.create.submit','app.record.edit.submit'], function (event) {
var record = event.record;
var attachmentOption = record['項目選択'].value;

let inputFiles = document.querySelectorAll('.input-file-cybozu');
var 甲 = inputFiles[0].querySelectorAll('.plupload_file_name').length;
var 乙 = inputFiles[1].querySelectorAll('.plupload_file_name').length;

if (attachmentOption === 'A') {

if (甲 === 0 || 乙 === 0) {
event.error = 'エラーメッセージ';

}
}
else if (attachmentOption === 'B') {
if (甲 === 0) {
event.error = 'エラーメッセージ';

}
}
else if (attachmentOption === 'C') {
if (乙 === 0) {
event.error = 'エラーメッセージ';
}
}
return event;
  });
})();

```

---

<div class="post-metadata">

**Author:** ![Buser](https://avatars.discourse-cdn.com/v4/letter/b/58f4c7/32.png) [@Buser](https://community.cybozu.dev/u/Buser)\
**Post date:** [2023 年 7 月 27 日午前 6:07 UTC](https://community.cybozu.dev/t/topic/7866/8 "2023-07-27T06:07:25Z")

</div>

ご返信ありがとうございます。

記載頂いたコードを自環境に当てはめたところ正しく動作しました。  
ありがとうございます。

const className = “.field-xxxxxxx”;  
const field = document.querySelector(className);  
const 甲 = field.querySelectorAll(“.plupload\_file\_name”).length;

const className = “.field-xxxxxxx”;  
const field1 = document.querySelector(className);  
const 乙 = field1.querySelectorAll(“.plupload\_file\_name”).length;

ご返信頂くまでに、Class名を取得する方法でコードを書いておりましたが  
こちらでもうまくいきました。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2023 年 7 月 30 日午前 6:08 UTC](https://community.cybozu.dev/t/topic/7866/9 "2023-07-30T06:08:16Z")

</div>

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