使用HTML / PHP的生日表单

时间:2011-08-05 18:33:09

标签: php html forms

我正在制作一个注册表格,让用户在他的生日那天。 问题是在二月和几个月没有以31结束时。用户能够放置像2月31日或4月31日这样的东西。选择2月时,是否有任何实际的方法可以显示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>

4 个答案:

答案 0 :(得分:1)

不要那样做。

大多数人都非常愿意完整地输入他们的生日。 <option>/<select>确实不必要。

如果你无法访问一个好的日期猜测服务器端(你可能会遇到这种情况),可以将它分成三个单独的字段,但通常情况下甚至都不需要。

只需给它们一个可以轻松容纳10位数的字段,如果收到日期时含糊不清,请询问用户是否猜对了。

答案 1 :(得分:1)

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

使用此功能,您的所有日期问题都将永久解决。

答案 2 :(得分:1)

<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>

答案 3 :(得分:0)

您可以使用JavaScript根据月份将下拉列表限制为28天,30天或31天。这不要求您使用AJAX。