Форма рождения с использованием HTML / PHP

Я делаю регистрационную форму, на которую пользователь будет входить в свой день рождения. Проблема заключается в том, когда дело доходит до февраля и месяцев, которые не заканчиваются на 31. Пользователь может поставить что-то вроде 31 февраля или 31 апреля. Есть ли какой-либо практический способ показать только 28, когда выбран февраль? (кроме использования Ajax)

<html> <body> <form action="registration.php" method="post"> <p><u>Select table</u></p> <p>Select date:</p> <select name="day"> <?php for($i=1;$i<=31;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } <select name="month"> <option value="January">January</option> <option value="February">February</option> <option value="Mars">Mars</option> <option value="April">April</option> <option value="May">May</option> <option value="June">June</option> <option value="July">July</option> <option value="September">September</option> <option value="October">October</option> <option value="November">November</option> <option value="December">December</option> </select> <select name="year"> <?php for($i=2011;$i<=2015;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } ?> </select> <br/><br/> <input type="submit" value="Submit" /> </form> </body> </html> 

Вы можете использовать JavaScript для ограничения раскрывающегося списка до 28, 30 или 31 дня в зависимости от месяца. Это не требует использования AJAX.

Не делай этого.

Большинство людей предпочитают печатать свой день рождения в полном объеме. Бит <option>/<select> действительно не нужен.

Если у вас нет доступа к серверу с хорошей догадкой (например, вы делаете), разделите его на три отдельных поля, но обычно это даже не нужно.

Просто дайте им одно поле, которое может удобно разместить 10 цифр, и если дата неоднозначна, когда вы ее получили, спросите пользователя, правильно ли вы это угадали.

http://jqueryui.com/demos/datepicker/

Используйте это, и все ваши проблемы с датой решаются навсегда.

 <html> <head> <title>Test</title> </head> <body> Date Of Birth: <select name="month" onChange="changeDate(this.options[selectedIndex].value);"> <option value="na">Month</option> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> <option value="4">April</option> <option value="5">May</option> <option value="6">June</option> <option value="7">July</option> <option value="8">August</option> <option value="9">September</option> <option value="10">October</option> <option value="11">November</option> <option value="12">December</option> </select> <select name="day" id="day"> <option value="na">Day</option> </select> <select name="year" id="year"> <option value="na">Year</option> </select> <script language="JavaScript" type="text/javascript"> function changeDate(i){ var e = document.getElementById('day'); while(e.length>0) e.remove(e.length-1); var j=-1; if(i=="na") k=0; else if(i==2) k=28; else if(i==4||i==6||i==9||i==11) k=30; else k=31; while(j++<k){ var s=document.createElement('option'); var e=document.getElementById('day'); if(j==0){ s.text="Day"; s.value="na"; try{ e.add(s,null);} catch(ex){ e.add(s);}} else{ s.text=j; s.value=j; try{ e.add(s,null);} catch(ex){ e.add(s);}}}} y = 1993; while (y-->1940){ var s = document.createElement('option'); var e = document.getElementById('year'); s.text=y; s.value=y; try{ e.add(s,null);} catch(ex){ e.add(s);}} </script> </body> </html> в <html> <head> <title>Test</title> </head> <body> Date Of Birth: <select name="month" onChange="changeDate(this.options[selectedIndex].value);"> <option value="na">Month</option> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> <option value="4">April</option> <option value="5">May</option> <option value="6">June</option> <option value="7">July</option> <option value="8">August</option> <option value="9">September</option> <option value="10">October</option> <option value="11">November</option> <option value="12">December</option> </select> <select name="day" id="day"> <option value="na">Day</option> </select> <select name="year" id="year"> <option value="na">Year</option> </select> <script language="JavaScript" type="text/javascript"> function changeDate(i){ var e = document.getElementById('day'); while(e.length>0) e.remove(e.length-1); var j=-1; if(i=="na") k=0; else if(i==2) k=28; else if(i==4||i==6||i==9||i==11) k=30; else k=31; while(j++<k){ var s=document.createElement('option'); var e=document.getElementById('day'); if(j==0){ s.text="Day"; s.value="na"; try{ e.add(s,null);} catch(ex){ e.add(s);}} else{ s.text=j; s.value=j; try{ e.add(s,null);} catch(ex){ e.add(s);}}}} y = 1993; while (y-->1940){ var s = document.createElement('option'); var e = document.getElementById('year'); s.text=y; s.value=y; try{ e.add(s,null);} catch(ex){ e.add(s);}} </script> </body> </html> в <html> <head> <title>Test</title> </head> <body> Date Of Birth: <select name="month" onChange="changeDate(this.options[selectedIndex].value);"> <option value="na">Month</option> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> <option value="4">April</option> <option value="5">May</option> <option value="6">June</option> <option value="7">July</option> <option value="8">August</option> <option value="9">September</option> <option value="10">October</option> <option value="11">November</option> <option value="12">December</option> </select> <select name="day" id="day"> <option value="na">Day</option> </select> <select name="year" id="year"> <option value="na">Year</option> </select> <script language="JavaScript" type="text/javascript"> function changeDate(i){ var e = document.getElementById('day'); while(e.length>0) e.remove(e.length-1); var j=-1; if(i=="na") k=0; else if(i==2) k=28; else if(i==4||i==6||i==9||i==11) k=30; else k=31; while(j++<k){ var s=document.createElement('option'); var e=document.getElementById('day'); if(j==0){ s.text="Day"; s.value="na"; try{ e.add(s,null);} catch(ex){ e.add(s);}} else{ s.text=j; s.value=j; try{ e.add(s,null);} catch(ex){ e.add(s);}}}} y = 1993; while (y-->1940){ var s = document.createElement('option'); var e = document.getElementById('year'); s.text=y; s.value=y; try{ e.add(s,null);} catch(ex){ e.add(s);}} </script> </body> </html>