html-select
我有3个HTML <select>
年,月和日。年份和月份自动设置为当前年份和当前月份。我纯粹用PHP做到了这一点。但是,这是由触发的Javascript的日子似乎并不尽管我已经做了html-select <option selected =“”>不起作用
if (j == <?php echo date('d') ?>) days_select.options[days_select.options.length] = new Option(j, j, true);
默认天仍是1不是当前的一天的工作。甚至令人沮丧的是,当我在萤火虫上检查它时,选定的一天是当天......我是编程中的一个完全noob,这就是为什么这些简单的东西对我来说很难掌握。请帮助...
date_select.php
<body onload="loadDays();">
<script type="text/javascript" >
function loadDays() {
var year = parseInt(document.getElementById('years').value);
var month = document.getElementById('months').value;
var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ((year % 4) == 0) days[1] = 29;
var days_select = document.getElementById('days');
days_select.options.length = 0;
for(i in months) {
if (month == months[i]) {
for(var j = 1; j <= days[i]; j++) {
if (j == <?php echo date('d') ?>) days_select.options[days_select.options.length] = new Option(j, j, true);
else days_select.options[days_select.options.length] = new Option(j, j);
}
break;
}
}
}
</script>
<span style="display: table; ">
<span style="display: table-cell; ">
<select id="years" onchange="loadDays();">
<?php
for($year = 1900; $year <= 2100; $year++) {
if ($year == date('Y')) echo "<option value='$year' selected=''>" . $year . "</option>";
else echo "<option value='$year'>" . $year . "</option>";
}
?>
</select>
</span>
<span style="display: table-cell; ">
<select id="months" onchange="loadDays();">
<?php
$months = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
foreach($months as $month){
if ($month == date('M')) echo "<option value='$month' selected=''> " . $month . "</option>";
else echo "<option value='$month'> " . $month . "</option>";
}
?>
</select>
</span>
<span style="display: table-cell; ">
<select id="days" >
</select>
</span>
</span>
</body>
我把它作为一个单独的答案,因为它是一个。
Option()
的第三个参数是该选项是否默认选中,就像它是在HTML中指定的一样。第四个是现在是否真的被选中。将另一个true
添加到您的Option()
调用中,它适用于我的测试。
new Option(j, j, true, true)
我想可能是因为<?php echo date('d') ?>
产生串"04"
带有前导零的。您的j
循环计数器是一个整数,并且永远不会匹配PHP输出的字符串。
尝试使用Javascript的parseInt()
函数进行包装,或使用date('j')
表示前导零。
if (j == parseInt(<?php echo date('d') ?>))
更好的是,只需使用Javascript自己的Date对象来获取当天。
var theDateObj = new Date();
var today = theDateObj.getDate(); // Will output int 4 for today.
但在萤火虫中显示? ANYWAY我会尝试...谢谢 – 2011-05-05 02:42:10
我现在看到它 - 你需要另一个参数到你的'新的Option()'。您已将'defaultSelected'参数设置为true,但您还需要使用以下参数'true'来说明它现在是否真的被选中。 '新的选项(j,j,true,true);'经过测试并为这项修改工作。 – 2011-05-05 02:53:56
它的工作......新选项(j,j,真,真)做到了......非常感谢! – 2011-05-05 02:55:45
这回答了......感谢您向我解释...... – 2011-05-05 02:57:47