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

項目選択(ラジオボタン)に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を選択した際、甲の添付ファイルチェックは正しくできるのですが、どうしても乙のチェックを行うことができません。
添付箇所が二か所あるとき、上記のコードをどのように書けば実現できますでしょうか。

宜しくお願い致します。

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

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

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

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

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

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

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;

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

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

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

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

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

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

(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;
  });
})();
1 Like

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

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

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名を取得する方法でコードを書いておりましたが
こちらでもうまくいきました。

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