2017-03-02 118 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