2012-06-23 268 views
0

我正在创建注册,我需要获取用户出生日期,我的问题是,如何在html中创建月,年和日的下拉框,然后再处理那些日子到一个PHP脚本,将其插入数据库?月份,年份和日期应该有一个月的有效日期?日期,月份和年份下拉框

+0

有一个例子[这里](http://www.plus2net.com/php_tutorial/date-selection.php),告诉你该怎么做。 –

回答

4

编辑:​​

如何:

<select name="year"></select> 
<select name="month"> 
    <option value="1">January</option> 
    ... 
</select> 
<select name="day"></select> 

而且JS部分:

var ysel = document.getElementsByName("year")[0], 
    msel = document.getElementsByName("month")[0], 
    dsel = document.getElementsByName("day")[0]; 
for (var i = 2000; i >= 1950; i--) { 
    var opt = new Option(); 
    opt.value = opt.text = i; 
    ysel.add(opt); 
} 
ysel.addEventListener("change", validate_date); 
msel.addEventListener("change", validate_date); 

function validate_date() { 
    var y = +ysel.value, m = msel.value, d = dsel.value; 
    if (m === "2") 
     var mlength = 28 + (!(y & 3) && ((y % 100)!==0 || !(y & 15))); 
    else var mlength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m - 1]; 
    dsel.length = 0; 
    for (var i = 1; i <= mlength; i++) { 
     var opt = new Option(); 
     opt.value = opt.text = i; 
     if (i == d) opt.selected = true; 
     dsel.add(opt); 
    } 
} 
validate_date(); 

我将让你在PHP的一部分工作。

几个注意事项:

  1. 我用addEventListener。请记住,IE < 9使用attachEvent代替。您可以使用onchange属性(不建议使用)或依赖jQuery等一些JS框架来完成这项工作:$(msel).change(validate_date);
  2. 在旧版本的Firefox中,add方法的<select>元素很愚蠢,需要第二个参数null
  3. 当脚本计算mlength二月,它增加了一个布尔值(一个简单的检查为闰年),这是铸造为0或1,至28。这就提出了在ECMAScript中5严格模式和异常。
+0

如何以mm和dd格式转换日期和月份。对于月份我需要01-12在期权价值和日期我需要01-31在期权价值。 –

1

只要给他们一个纯文本输入。如果你不相信人们通过打字正确输入他们的生日,为什么使用select元素会有所作为?只要告诉他们你期望的格式。

例如

<script> 
function validateDate(v) { 
    var bits = v.split('/'); 
    var d = new Date(bits[2], --bits[1], bits[0]); 
    return d.getFullYear() == bits[2] && d.getMonth() == bits[1]; 
} 

function validateForm(form) { 
    if (!validateDate(form.birthday.value)) { 
    alert('Birthday date is not a valid date'); 
    return false; 
    } 
} 
</script> 

<form onsubmit="return validateForm(this);" action=""> 
    <div>Birthday (day/month/year): <input type="text" name="birthday"> 
    <input type="submit"> 
    </div> 
</form> 

您可以包括脚本verison替换与选择普通的输入,但是覆盖在合理期限你必须在今年选择约100项,那么你就需要等待,直到他们都选择一年和一个月才能投入日子。至少上面给出了一个验证日期的简单算法。

+0

只是喜欢开车倒推票。如果您不准备通过评论来支持您的投票,它将被忽略。 – RobG

相关问题