public/js/subQuestionnaire.js

//////////////////////////////////////////////////////////////////////
//	Copyright (C) SUGIMURA Lab. 2021.11.05
//	アンケート関係の処理
//////////////////////////////////////////////////////////////////////
'use strict'


////////////////////////////////////////////////////////////////////////////////
// HTMLロードしたら準備
/**
 * @namespace subQuestionnaire
 */
window.addEventListener('DOMContentLoaded', function () {
	console.dir('## DOMContentLoaded subQuestionnaire.js');

	/** 
	 * @func 
	 * @desc アンケート回答の投稿ボタンを押したときの処理
	 * @param {void}
	 * @return {void}
	 */
	window.getQuestionnaire = function () {
		// 大項目ごとの小項目の数の上限の定義
		const qnums = {
			"1": 9,
			"2": 9,
			"3": 7,
			"4": 12,
			"5": 10,
			"6": 7
		};

		let err = ''; // エラーメッセージ
		let submitData = {}; // 送信データ

		try {
			// 小項目ごとにラジオボタンがチェックされているかをチェック
			for (let i = 1; i <= 6; i++) {
				for (let j = 1; j <= qnums[i.toString()]; j++) {
					let name = 'q_' + i + '_' + j;

					let elem = document.getElementsByName(name);
					let len = elem.length;
					let val = '';
					for( let i=0; i<len; i+=1 ) {
						if (elem.item(i).checked) {
							val = elem.item(i).value;
						}
					}

					if (!val) {
						throw new Error('質問 ' + i + '.' + j + '. に回答してください。');
					}else{
						submitData[name] = val;
					}
				}
			}
			// 投稿の確認ダイアログを表示
			let res = window.confirm('本当に投稿してもよろしいですか?');
			if (res === false) {
				return null;
			}
			return submitData;

		} catch (error) {
			// 未回答エラーをポップアップ
			window.alert(error.message);
			return null;
		}
	};

} );