2017-03-02 155 views
2

我想默認設置當前日期,但它只適用於年份選擇(最後一個)。選擇的HTML選項不起作用

我不想在這種情況下使用JavaScript。只需htmlphp

我已經嘗試過「selected ='selected'」和「autocomplete = off」,如其他帖子所示。

這裏我的代碼

<form id="form-orders-date" onsubmit="selectOrdersDate();"> 
        <select id="orders-day"> 
         <?php 
         for ($i=1; $i <= 31; $i++) { 
          if (sprintf('%02d', $i) == date("d")) { 
           echo "<option value=\"".sprintf('%02d', $i)."\" selected>".sprintf('%02d', $i)."</option>"; 
          } 
          else{ 
           echo "<option value=\"".sprintf('%02d', $i)."\">".sprintf('%02d', $i)."</option>" ; 
          } 
         } 
         ?> 
        </select> 
        <select id="orders-month"> 
         <?php 
         for ($i=1; $i <= 12; $i++) { 
          if (sprintf('%02d', $i) == date("m")) { 
           echo "<option value=\"".sprintf('%02d', $i)."\" selected>".sprintf('%02d', $i)."</option>"; 
          } 
          else{ 
           echo "<option value=\"".sprintf('%02d', $i)."\">".sprintf('%02d', $i)."</option>" ; 
          } 
         } 
         ?> 
        </select> 
        <select id="orders-year"> 
         <?php 
         for ($i=2012; $i <= 2020; $i++) { 
          if (sprintf('%02d', $i) == date("Y")) { 
           echo "<option value=\"".sprintf('%02d', $i)."\" selected>".sprintf('%02d', $i)."</option>"; 
          } 
          else{ 
           echo "<option value=\"".sprintf('%02d', $i)."\">".sprintf('%02d', $i)."</option>" ; 
          } 
         } 
         ?> 
        </select> 
        <input type="submit" value="OK" /> 
</form> 

這裏時,PHP已經運行純HTML:

<form id="form-orders-date" onsubmit="selectOrdersDate();"> 
 
    <select id="orders-day"> 
 
     <option value="01">01</option> 
 
     <option value="02" selected>02</option> 
 
     <option value="03">03</option> 
 
     <option value="04">04</option> 
 
     <option value="05">05</option> 
 
     <option value="06">06</option> 
 
     <option value="07">07</option> 
 
     <option value="08">08</option> 
 
     <option value="09">09</option> 
 
     <option value="10">10</option> 
 
     <option value="11">11</option> 
 
     <option value="12">12</option> 
 
     <option value="13">13</option> 
 
     <option value="14">14</option> 
 
     <option value="15">15</option> 
 
     <option value="16">16</option> 
 
     <option value="17">17</option> 
 
     <option value="18">18</option> 
 
     <option value="19">19</option> 
 
     <option value="20">20</option> 
 
     <option value="21">21</option> 
 
     <option value="22">22</option> 
 
     <option value="23">23</option> 
 
     <option value="24">24</option> 
 
     <option value="25">25</option> 
 
     <option value="26">26</option> 
 
     <option value="27">27</option> 
 
     <option value="28">28</option> 
 
     <option value="29">29</option> 
 
     <option value="30">30</option> 
 
     <option value="31">31</option> 
 
    </select> 
 
    <select id="orders-month"> 
 
     <option value="01">01</option> 
 
     <option value="02">02</option> 
 
     <option value="03" selected>03</option> 
 
     <option value="04">04</option> 
 
     <option value="05">05</option> 
 
     <option value="06">06</option> 
 
     <option value="07">07</option> 
 
     <option value="08">08</option> 
 
     <option value="09">09</option> 
 
     <option value="10">10</option> 
 
     <option value="11">11</option> 
 
     <option value="12">12</option> 
 
    </select> 
 
    <select id="orders-year"> 
 
     <option value="2012">2012</option> 
 
     <option value="2013">2013</option> 
 
     <option value="2014">2014</option> 
 
     <option value="2015">2015</option> 
 
     <option value="2016">2016</option> 
 
     <option value="2017" selected>2017</option> 
 
     <option value="2018">2018</option> 
 
     <option value="2019">2019</option> 
 
     <option value="2020">2020</option> 
 
    </select> 
 
    <input type="submit" value="OK" /> 
 
</form>

+0

您可以添加普通的HTML當PHP已經運行?它使閱讀更容易。 –

+0

是的,你是對的 – ilrenzo

回答

0

這是你正在尋找 代碼一定要記得用單引號(')包含雙引號引起php回聲,否則如果使用雙引號將「\」放在外部 雙引號。

<form id="form-orders-date" onsubmit="selectOrdersDate();"> 
        <select id="orders-day"> 
         <?php 
         for ($i=1; $i <= 31; $i++) { 
          if ($i == date("d")) { 
           echo '<option value="'.$i.'" selected>'.$i.'</option>'; 
          } 
          else{ 
           echo '<option value="'.$i.'">'.$i.'</option>'; 
          } 
         } 
         ?> 
        </select> 
        <select id="orders-month"> 
         <?php 
         for ($i=1; $i <= 12; $i++) { 
          if ($i == date("m")) { 
           echo '<option value="'.$i.'" selected>'.$i.'</option>'; 
          } 
          else{ 
           echo '<option value="'.$i.'">'.$i.'</option>'; 
          } 
         } 
         ?>       
        </select> 
        <select id="orders-year"> 
         <?php 
         for ($i=2012; $i <= 2020; $i++) { 
          if ($i == date("Y")) { 
           echo '<option value="'.$i.'" selected>'.$i.'</option>'; 
          } 
          else{ 
           echo '<option value="'.$i.'">'.$i.'</option>'; 
          } 
         } 
         ?> 
        </select> 
+0

謝謝你,它運作良好,但我不明白爲什麼,我的意思是:最終的HTML生成的代碼是完全一樣的,與「選擇」選項相同的地方 – ilrenzo

+0

正如我所說的單引號('),如果包含雙引號引起php回聲,或者如果使用雙引號,則在外雙引號內使用\「 –

+0

這意味着$ name =」ilrenzo「; echo」我的名字是「」。 「」;將不起作用 但是: echo'我的名字是''。$ name。'「;將工作。 輸出將是: 我的名字是「ilrenzo」 –

0

你可以這樣試試。

<form id="form-orders-date" onsubmit="selectOrdersDate();"> 
<select id="orders-day"> 
<?php 
    for ($i=1; $i <= 31; $i++) { 
     if ($i == date("d")) { 
      echo "<option value='$i' selected='selected'>$i</option>"; 
     } else { 
      echo "<option value='$i'>$i</option>"; 
     } 
    } 
?>     
</select> 
<select id="orders-month"> 
    for ($i=1; $i <= 12; $i++) { 
     if ($i == date("m")) { 
     echo "<option value='$i' selected='selected'>$i</option>"; 
     } else { 
     echo "<option value='$i'>$i</option>"; 
     } 
    }    
</select> 
<select id="orders-year"> 
<?php 
    for ($i=2012; $i <= 2020; $i++) { 
    if ($i == date("Y")) { 
     echo "<option value='$i' selected='selected'>$i</option>"; 
    } else { 
     echo "<option value='$i'>$i</option>"; 
    } 
}    
?> 
</select> 
&nbsp;&nbsp;<input type="submit" value="OK" /> 
</form> 
0

這裏是實現這一目標的一個更緊湊的方式:

<form id="form-orders-date" onsubmit="selectOrdersDate();"> 
    <select id="orders-day"> 
     <?php for ($d = 1; $d <= 31; $d++) { ?> 
      <option value="<?php echo $d; ?>" <?php if ($d == date('j')) { echo 'selected'; ?>><?php echo $d; ?></option> 
     <?php } ?> 
    </select> 
    <select id="orders-month"> 
     <?php for ($m = 1; $m <= 12; $m++) { ?> 
      <option value="<?php echo $m; ?>" <?php if ($m == date('n')) { echo 'selected'; ?>><?php echo $m; ?></option> 
     <?php } ?> 
    </select> 
    <select id="orders-year"> 
     <?php for ($y = 2012; $y <= 2020; $y++) { ?> 
      <option value="<?php echo $y; ?>" <?php if ($y == date('Y')) { echo 'selected'; ?>><?php echo $y; ?></option> 
     <?php } ?> 
    </select> 
    &nbsp;&nbsp; 
    <input type="submit" value="OK" /> 
</form> 
0

我知道你說你試過這個了,但你的示例代碼不表現出來。以下是您的代碼應該如何形成:

<select> 
<option value="01">01</option> 
<option value="02" selected="selected">02</option> 
<option value="03">03</option> 
... 
</select> 

上面的示例對於所選元素看起來非常不同。我建議使用任何檢測工具內置到您的網頁瀏覽器,看看究竟是什麼渲染,這可能會使解決方案顯而易見。

僅供參考,請參閱:

Definition of select tag

Definition of option tag