1

http://validator.w3.org/内で検証するフォームを取得しようとしています。Javascript によって作成されたオプションを持つフォームがあります。これは、ユーザーによる日付の選択を簡素化するために行われます。

インライン JavaScript は以下を作成します。

  • 現在の年月(到着日)
  • 未来の年月(出発日)

javascript を PHP に変換することを考えましたが、javascript を維持しながら、同時に検証テストに合格できる方法はありますか?

JavaScriptコードは次のとおりです。

<div class="dateBE">Fecha de llegada</div>
<select class="fieldTRA" id="b_checkin_day" name="checkin_monthday" onchange="checkDateOrder('frm', 'b_checkin_day', 'b_checkin_month', 'b_checkout_day', 'b_checkout_month') ; tickCheckBox('b_availcheck');">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</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 class="fieldTRA" id="b_checkin_month" name="checkin_year_month" onchange="checkDateOrder('frm', 'b_checkin_day', 'b_checkin_month', 'b_checkout_day', 'b_checkout_month') ; tickCheckBox('b_availcheck');">

**<script type="text/javascript">
/* <![CDATA[ */
            var monthArray=new Array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre");
var today = new Date();
      var month= today.getMonth();
      var year = today.getFullYear()%100;
      var fullYear=today.getFullYear();
      year=new String(year);
      year=addzero(year);
      var countMonth=month;
      for(var i=0;i<12;i++,countMonth++){
    if(countMonth%12==0 && i>0){
   countMonth=0;
   year++;
   year=new String(year);
   year=addzero(year);
   fullYear++;
    }
    document.writeln("<option value=\""+fullYear+"-"+(countMonth+1)+"\">"+monthArray[countMonth]+" '"+year);
    }
/* ]]> */
</script>
  </select>
</div>**


<div id="homeout">
<div class="dateBE">Fecha de salida</div>


<select class="fieldTRA" id="b_checkout_day" name="checkout_monthday" onchange="tickCheckBox('b_availcheck');">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</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 class="fieldTRA" id="b_checkout_month" name="checkout_year_month" onchange="tickCheckBox('b_availcheck');">
<script type="text/javascript">
/* <![CDATA[ */
      var monthArray=new Array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre");
      var today = new Date();
      var month= today.getMonth();
      var year = today.getFullYear()%100;
      var fullYear=today.getFullYear();
      year=new String(year);
      year=addzero(year);
      var countMonth=month;
      for(var i=0;i<12;i++,countMonth++){
if(countMonth%12==0 && i>0){
   countMonth=0;
   year++;
   year=new String(year);
   year=addzero(year);
   fullYear++;
}
document.writeln("<option value=\""+fullYear+"-"+(countMonth+1)+"\">"+monthArray[countMonth]+" '"+year);
}

/* ]]> */
</script>
  </select>
</div>

            </div>

フォームはここで見ることができます: http://www.visitar.com

4

1 に答える 1

0

すべてのform/html構築ロジックをPHPに移動することをお勧めします。ここで行うことは、javascriptでフォームに値を追加し、サーバー上のPHPコードでこれらの値を処理するため、かなりあいまいな組み合わせです。

javascriptを使用してこれを行う方法を探している場合は、目立たないJSコードを作成するのに役立つjQueryをご覧ください。例:

$(function() {
    var opt = "";

    // Date calculations left out
    for(var i=0;i<12;i++,countMonth++) {
        opt += "<option value=\""+fullYear+"-"+(countMonth+1)+"\">"+monthArray[countMonth]+" '"+year; 
    });

    $('#b_checkout_month').append(opt);   
}

このスクリプトは、ドキュメントへの直接アクセスに依存せず、jQueryセレクター$('#b_checkout_month')による選択オプションを参照するため、ヘッドに含めることも、bodyタグを閉じる直前に含めることもできます。

于 2012-10-14T22:13:08.933 に答える