マトリクス形式の選択フォームの作成方法をご案内しまし。
この形式は、同じ回答項目を持つ質問に対して有効です。
繰り返しの文章などが省かれ図形化されるので、回答がしやすくなります。
コツを掴めば、スパイラル®のフォームでも簡単に設定できます。
DEMOは、こちら ※Q3を参照ください。
テーブルの設定
スパイラル®のデータベース設定に関しては、択一のセレクト(ラジオボタン)を選択してください。
また、データベースのフィールドラベルを設定する際、数値1以上なら自由に設定することができますが、value値などを紐付ける役割があるため、管理しやすいものをおすすめします。
ではさっそく、HTMLから見ていきましょう!
<dl class="cf">
<dt class="title">
物件A <span class="need">*</span>
</dt>
<dd class="data multi2">
<ul class="radio cf">
<li><label><input class="input" type="radio" name="●●●" value="1" $●●●:r1$><span>内見していない</span></label></li>
<li><label><input class="input" type="radio" name="●●●" value="2" $●●●:r2$><span>内見予定</span></label></li>
<li><label><input class="input" type="radio" name="●●●" value="3" $●●●:r3$><span>良くない</span></label></li>
<li><label><input class="input" type="radio" name="●●●" value="4" $●●●:r4$><span>あまり良くない</span></label></li>
<li><label><input class="input" type="radio" name="●●●" value="5" $●●●:r5$><span>普通</span></label></li>
<li><label><input class="input" type="radio" name="●●●" value="6" $●●●:r6$><span>良い</span></label></li>
<li><label><input class="input" type="radio" name="●●●" value="7" $●●●:r7$><span>かなり良い</span></label></li>
</ul>
<input type="hidden" value="" name="●●●">
<span class="msg">$error:●●●$</span>
</dd>
</dl>
※●●●には、データベース構築の際、フィールド名ごとに設定した差替キーワードが記入されています。また、「$●●●:r1$」の“:(コロン)”以降の英数字は、「ラジオボタン」で設定された「フィールドラベルのIDナンバー」のことで、これは自動でHTMLに記載されます。
上記のソースコードはデフォルトです。
最初の質問のdt要素は、空欄表示の設定をします。
Q3のタイトルは新たにpタグなどで追記しましょう!
<p class="title_matrix">
Q3.当物件以外で内見予定、または内見済みのものがあれば、ご感想をお答えください<span class="need">*</span>
</p>
<dl class="cf">
<dt class="title_matrix"> </dt>
<dd class="data_matrix">
そして、dd要素内をtableで構成させます。
<dd class="data_matrix">
<table summary="matrix" border="1" cellspacing="0" cellpadding="5" bordercolor="#999">
<colgroup span="1" style="width:9%; background:yellow;"></colgroup>
<colgroup span="7" style="width:13%; background:#fff;"></colgroup>
<thead style="text-align: center; background: #c3fa71;"><!-- 評価値を記入する行 -->
<tr>
<th> </th><th>未見</th><th>内見予定</th><th>最悪</th><th>良くない</th><th>普通</th><th>良い</th><th>最高</th>
</tr>
</thead>
<tbody><!-- tbodyは質問と回答を表示-->
<tr><!-- 質問1 -->
<th></th><!-- 質問1タイトル -->
<td></td><!-- 質問1ラジオボタン(回答欄) -->
</tr>
<tr><!-- 質問2 -->
<th></th>
<td></td>
</tr>
<tr><!-- 質問3 -->
<th></th>
<td></td>
</tr>
<tr><!-- 質問4 -->
<th></th>
<td></td>
</tr>
<tr><!-- 質問5 -->
<th></th>
<td></td>
</tr>
</tbody>
</table>
</dd>
上記のように、HTMLのthead部分には評価内容の数だけthを設定します。
次に、tbody内は質問の数だけtr要素を用意します。
ブラウザで表示させるとこのようになります。
黄と白の部分がtbodyです。
そのうちの黄色部分はth要素です。ここには質問内容が入ります。
そしてtdには回答のためのラジオボタンを表示させます。
テーブル内にラジオボタンを表示させる
td内にラジオボタン=input要素を反映させると以下のようになります。
<dd class="data_matrix"> <table summary="matrix" border="1" cellspacing="0" cellpadding="5" bordercolor="#999"> <colgroup span="1" style="width:9%; background:yellow;"> </colgroup> <colgroup span="7" style="width:13%; background:#fff;"> </colgroup> <thead style="text-align: center; background: #c3fa71;"> <tr><th> </th><th>未見</th><th>内見予定</th><th>最悪</th><th>良くない</th><th>普通</th><th>良い </th><th>最高</th></tr> </thead> <tbody> <tr> <th>物件A<span class="msg">$error:●●●$</span></th><!-- 質問1 --> <td><label><input class="input_matrix" type="radio" name="●●●" value="1" $●●●:r1$ title="未見" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="2" $●●●:r2$ title="内見 予定"></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="3" $●●●:r3$ title="最悪" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="4" $●●●:r4$ title="良く ない"></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="5" $●●●:r5$ title="普通" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="6" $●●●:r6$ title="良い" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="7" $●●●:r7$ title="最高" ></label></td> <input type="hidden" value="" name="●●●"> </tr><!-- ここまで、質問1 --> <tr><!-- 質問2 --> <th>物件B<span class="msg">$error:●●●$</span></th> <td><label><input class="input_matrix" type="radio" name="●●●" value="1" $●●●:r1$ title="未見" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="2" $●●●:r2$ title="内見 予定"></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="3" $●●●:r3$ title="最悪" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="4" $●●●:r4$ title="良く ない"></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="5" $●●●:r5$ title="普通" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="6" $●●●:r6$ title="良い" ></label></td> <td><label><input class="input_matrix" type="radio" name="●●●" value="7" $●●●:r7$ title="最高" ></label></td> <input type="hidden" value="" name="●●●"> </tr><!-- ここまで、質問2 --> ~~以降物件Eまで繰り返し </tbody> </table> </dd>
一つ目の質問さえ設定し終えたら、二つ目以降の質問に関してはコピー&ペーストすればOKです。
ただ、上の赤枠部分は質問ごとに異なるので変更してください!
テーブル表示のレスポンシブ設定
それでは、レスポンシブ表示させるためのCSS設定を行いましょう。
/*PC表示用*/
table[summary="matrix"] {
text-align: center;
valign: middle;
width: 100%;
}
#SMP_STYLE dt.title_matrix {
display: inline-block;
width: 120px;
margin: 0;
padding: 23px 15px 18px 0;
color: #333333;
font-size: 108%;
font-weight:bold;
text-align:left;
line-height: 1.2;
vertical-align: top;
}
#SMP_STYLE dt.title_matrix .caution {
display: block;
width: 120px;
color: #5F5F5F;
font-size: 85%;
font-weight:normal;
padding: 10px 0 0 0;
line-height: 1.2;
text-align:left;
}
#SMP_STYLE dd.data_matrix {
display: inline-block;
width: 620px;
margin: 0;
padding: 18px 0;
color: #5F5F5F;
font-size: 100%;
font-weight: bold;
text-align: left;
}
#SMP_STYLE dd.data_matrix textarea {
width: 98%
}
#SMP_STYLE p.title_matrix {
margin: 0;
padding: 23px 15px 18px 0;
color: #333333;
font-size: 108%;
font-weight:bold;
text-align:left;
line-height: 1.2;
vertical-align: top;
}
#SMP_STYLE p.title_matrix .caution {
display: block;
width: 220px;
color: #5F5F5F;
font-size: 85%;
font-weight:normal;
padding: 10px 0 0 0;
line-height: 1.2;
text-align:left;
}
ポイントは、tableの幅(width)の値を100%にすることです。
また、メディアクエリを使ったスマートフォン用の設定をする際、table dd {display: block}の設定も必要になります。
/*スマートフォン表示用の一部抜粋*/
#SMP_STYLE dd.data_matrix {
position: relative;
display: block;
width: 270px;
margin: 0 0 10px 0;
padding: 18px 0 10px 0;
color: #5F5F5F;
font-size: 100%;
font-weight: bold;
text-align: left;
}
フォームカスタマイズ 関連リンク
Vol.1 姓名の記述を分けて横並びにするVol.2 “その他”の項目に入力欄を追加する
★ Vol.3 マトリクス形式の回答欄を作成する
Vol.4 星型のレーティング形式の回答欄を作成する
Vol.5 JavaScriptで項目の表示非表示を切り替える
Vol.6 タップで回答できるバー形式の回答欄を作成する
Vol.7 同意ボタンのチェックで送信ボタンを有効化させる