フォームに複数の選択項目があり、少なくともすべての必須フィールド ( required="true"
) が選択されていることを jQuery で確認する必要があります。
このようなもの:
<select class="check" name="first">
<option value="some" required="true">Some required</option>
<option value="other">Other Value</option>
<option value="few" required="true">Few required</option>
</select>
<select class="check" name="second">
<option value="some" required="true">Some required</option>
<option value="other">Other Value</option>
<option value="few" required="true">Few required</option>
</select>
<select class="check" name="third">
<option value="some" required="true">Some required</option>
<option value="other">Other Value</option>
<option value="few" required="true">Few required</option>
</select>
<select name="other">
<option value="some" required="true">Some required</option>
<option value="other">Other Value</option>
<option value="few" required="true">Few required</option>
</select>
クラスに含まれるすべての選択要素をチェックし、.check
すべての必須フィールドが割り当てられていることを確認する必要があります。
以下のように進めようと考えていました。
必要なすべての値の配列を作成します。
var requiredFields = []; $('option:selected', this).attr('required').each(function(){ requiredFields.push($(this).val()); })
選択したすべての値の配列を作成します。
var valuesSelected = []; $('.check').each(function(){ valuesSelected.push($(this).val()); })
必要なフィールドが選択された値の配列にあるかどうかを確認し、そうでない場合は何かを行います:
for(i=0;i<requiredFields;i++){ if(jQuery.inArray(requiredFields[i], valuesSelected)==-1){ var error += 'Please select '+requiredFields[i]; } }
エラーメッセージを表示するか、空の場合は何かを行います:
if(error!=''){ alert(error); // just for testing } else { // have fun }
私はそれをテストするために単純なjsFiddleを作成しましたが、何か間違ったことをしているに違いないようです。