0

さて、フォームがあり、このフォーム内には必須フィールドがたくさんあります。このフォームの誕生日部分は、月、日、年の 3 つのフィールドで構成されています。ここでやりたいことは、ドロップダウン リストの上部に「月:」、「日:」、および「年:」という単語を表示することですが、これらのオプションを受け入れられる回答にしたくありません。実際の月、日、年を選択せず​​にフォームを送信すると、エラーを印刷すると、月、日、年が必要であると表示されます。どうすればそれを達成できますか?フィールドを必須にする「if ステートメント」は、このコードの最後にあります。

<form action="" method="post">  
        <ul id="register">
            <li>
                Birthday:

                <select name="month">
                    <option value="month">Month:</option>
                    <option value="January">January</option>
                    //all the other months
                </select>

                <select name="day">
                    <option value="day">Day:</option>
                    <option value="1">1</option>
                    //all the other days of the month
                </select>

                <select name="year">
                    <option value="year">Year:</option>
                    <option value="2013">2013</option>
                    //more year options
                </select><br><br>
            </li>

            <li>
                <input type="submit" name="registrationform" value="Sign up">
            </li>
        </ul>
    </form>
    <?php
    if (!empty($_POST['registrationform'])) {
    if(isset($_POST['registrationform'])){
        $required_fields = array('month', 'day', 'year');
        foreach ( $required_fields as $key=>$value) {
         if (!isset($_POST[$value]) || $_POST[$value]=='') {
              $errors[$value] = $key." is required";

            }
   }

   print_r($errors);
}
    }

    ?>
4

3 に答える 3

3

optgroup を使用する

<select name="month">
  <optgroup label="Month:">
    <option value="January">January</option>
    //all the other months
  </optgroup>
</select>

etc.

JSFiddle

または、タイトルを表示する場合は、オプションを無効にしてタイトルを選択します。リストに触れると、タイトルは選択できなくなります。

<select name="month">
    <option disabled="disabled" selected="selected">Month:</option>
    <option value="January">January</option>
    //all the other months
</select>

JSFiddle

ここに画像の説明を入力

于 2013-01-05T12:08:35.357 に答える
1

I agree with PassKit but please add some validation to your code

if (!is_int($_POST[$value])) {
  // not valid
}

And dont post months as January but as 1 .. 12 since it much safer and easier to validate

于 2013-01-05T12:20:06.043 に答える
1

Give it an empty/no value and validate it

于 2013-01-05T12:20:14.017 に答える