簡體   English   中英

html-選擇<option selected="“”" value="doesn't work">不工作</option>

[英]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>
  &nbsp;
  <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>
  &nbsp;
  <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM