3つのグループ(A、B、C)の一連の質問を含むHTMLフォームがあり、ユーザーはどちらのグループの質問にもしか回答できません。入力を検証して、1つのグループのすべての質問にのみ回答したことを確認するスクリプトがあります。
彼らが回答した質問のグループをキャプチャし、それを非表示の入力として送信したいと思います。私はこのような隠し入力を設定しました:
<input type="hidden" name="type" value="" id="type">
理想的には、送信時にこれを次のようなものに置き換えたいと思います。
<input type="hidden" name="type" value="groupA" id="type">
フォーム/スクリプトを表示するフィドルを設定しました。
http://jsfiddle.net/fmdataweb/CGp8X/
これが私の現在の検証スクリプトです:
$('#editRecord').on('submit', validate);
$('input.sectionclear').on('click', function() {
$(this).next().find('input').attr('checked', false);
});
function validate(ev) {
var sectionsTouched = $('tbody').has(':checked'),
inputs = {},
errorMessage = '';
if (sectionsTouched.length === 0) {
errorMessage = 'Please check something before submitting.';
} else if (sectionsTouched.length > 1) {
errorMessage = 'Please complete A or B or C only';
} else {
sectionsTouched.find('input').each(function(i, e) {
var me = $(e), name = me.attr('name');
inputs[name] = !!inputs[name] || me.is(':checked');
});
$.each(inputs, function(k, v) {
if (!v) {
errorMessage = 'It appears you have not completed all questions.';
}
return v;
});
}
if (errorMessage !== '') {
$('#error').html(errorMessage);
ev.preventDefault();
return false;
}
return true;
}
function seriesNames() {
var names = [];
$('h3').each(function(i, e) {
names.push($(e).text());
});
return names;
}
function namesCommaDelimited(namesArr, conjunction) {
var retval = '', i, l = namesArr.length - 1, delimiter = '';
if (l === 0) {
return retval;
}
for (i = 0; i < l; i += 1) {
retval += delimiter;
retval += namesArr[i];
delimiter = ', ';
}
retval += delimiter;
retval += conjunction;
retval += ' ';
retval += namesArr[l];
return retval;
}
これを何らかの方法で拡張して、彼らが回答した質問のグループをキャプチャすることは可能ですか?HTMLテーブルには、各グループを識別するための3つのタグがあります。
<tbody class="groupA">