0

以下の編集2をお読みください

クイズ用のフォームを動的に生成しています。質問と回答は、MySQL データベースから取得されます。フォーム上のコントロールの種類は、チェックボックス、ラジオ ボタン、およびテキスト ボックスです。

1) 関連するすべての質問に対してラジオ ボタンが選択されていることを確認します (デフォルトでは何も選択されていません)。2) 関連するすべての質問に対して、少なくとも 1 つのチェックボックスが選択されていることを確認します。3) テキストボックスに何かが入力されていることを確認します。

これを行う方法についていくつかの例を見つけましたが、フォームを動的に生成しているため、問題が発生しました。

フォーム生成に使用しているアルゴリズムは次のとおりです。

Loop to get Questions from Database
{
  Store "Type" of Question in variable X (Type = Single Choice 'c' (Radio button), Multi Choice 'm' (Checkbox), User Entry 'u' (Textbox)

  Loop to get Answers for current Question
   {
     Switch(X)
     {
       case 'c'
         Load each answer into separate radio buttons, Name = Question number.
       break
       case 'm'
         Load each answer into separate checkboxes, Name = Question number.
       break
       case 'u'
         Place textbox, Name = Question number.
       break
      }
    }
}

その後、データが送信され、MySQL に保存されます。

すべてのフォーム要素を POST から配列にロードし、それらに値があるかどうかを確認しようとしましたが、個々の要素に値があるかどうかを確認することに気付きました。これは私が探しているものではありません。

これには何が最善のアプローチでしょうか?正しい方向へのポインタは大歓迎です!

編集2:

jQuery.validate を使用して、ラジオ ボタンとテキスト ボックスのこの問題を解決することができました。このページのソースコードを例として使用しました。ただし、チェックボックスでは機能しません。(チェックボックスに使用したソースコードを自分のページに直接コピーしましたが、それでも機能しません。最初のチェックボックスのみが強調表示され、他のチェックボックスをクリックしても検証は削除されません。

これは私が彼のウェブサイトからコピーしたコードの一部です。

<fieldset>
            <legend>Spam</legend>
            <label for="spam_email">
                <input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" required minlength="2">
                Spam via E-Mail
            </label>
            <label for="spam_phone">
                <input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]">
                Spam via Phone
            </label>
            <label for="spam_mail">
                <input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]">
                Spam via Mail
            </label>
            <label for="spam[]" class="error">Please select at least two types of spam.</label>
        </fieldset>

ここで何か不足していますか?私もコピーしておくべきだったものは他にありますか?(私のページにも両方のファイルが含まれています)

4

1 に答える 1