[英]html-select <option selected=“”> doesn't work
我有 3 个 html <select>
年、月和日。 年份和月份都会自动设置为当前年份和当前月份。 我纯粹是在 PHP 中做到这一点的。 但是,由 Javascript 触发的那一天似乎不起作用,即使我已经这样做了
if (j == <?php echo date('d') ?>) days_select.options[days_select.options.length] = new Option(j, j, true);
默认日期仍然是 1 而不是当前日期。 更令人沮丧的是,当我在萤火虫上检查它时,选定的日期就是当天......我是编程的菜鸟,这就是为什么像这些简单的事情对我来说有点难以掌握的原因。 请帮助...
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>
我认为这可能是因为<?php echo date('d')?>
产生带有前导零的字符串"04"
。 您的j
循环计数器是 integer,并且永远不会与 PHP 的字符串 output 匹配。
尝试将它包装在 Javascript 的parseInt()
function 中,或者使用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.
我将其作为单独的答案放入,因为它是一个。
Option()
的第三个参数是是否默认选择该选项,就像在 HTML 中指定的一样。 四是现在是否真的被选中。 在您的Option()
调用中添加另一个true
,它在测试中对我有用。
new Option(j, j, true, true)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.