我对Javascript相当缺乏经验,但我正在尝试为注册过程创建这种保护,以防止用户选择不存在的日期,例如9月31日(闰年是2月29日的另一个问题,我将稍后研究)。
目前我有这个,它只处理二月:
<select name="Day">
<option value="day">Day</option>
<script type="text/javascript">
function printDays(y) {
var x = 1;
while (x <= y) {
document.write("<option value=" + x + ">" + x + "</option>");
x++;
}
}
window.onload=printDays(31);
</script>
</select>
<script type="text/javascript">
if (document.getElementById("month").value == feb) {
printDays(28);
}
</script>
我确信这里有一些相当明显的错误,但我没有足够的经验来找出它!
答案已被接受-尽管使用日期选择器是个好主意,但它并不能防止已确定的用户(或禁用javascript的用户)返回无效值。
部分解决方案是将输入的值转换为javascript日期,然后再返回。javascript日期的基准是1970年,但使用64位带符号的值(即超过50万年的范围)。请注意,在javascript中月份的编号为0-11。
但这不能代替服务器端验证!
我不完全理解你的问题,但是考虑使用http://www.nickabusey.com/jquery-date-select-boxes-plugin/来节省你的工作时间。
演示代码你可以使用一个插件,比如JQueryUI日期选择器,它会为你处理所有的日期规则…
检查年、月、日组合是否正确
function checkDate(year, month, day) {
try {
var d = new Date(year, month, day);
return !isNaN(d.getDate()) && d.getDate() == day;
}
catch (e) {
return false;
}
}