3

日付を取得して変更しようとしていますここにコードがあります

           <script type="text/javascript">
           $(function() { 
            $("#terms_of_payment").change(function(){ 
                 var element = $(this).find('option:selected'); 
                 var days = element.attr("value"); 
                 var start = $('input[name="date"]').val();
                 var date = new Date(start);
                      var day = date.getDate() + days;
                      var month = date.getMonth();
                      var year = date.getFullYear();
                var edate = day + "-" + month +  "-" + year;
               alert(start);
               alert(edate);
               $('#due_date').val(edate); 
              }); 
              });
              </script>

それは正しい開始日を与えます、しかしそれに追加しようとすると、それは私に間違った月と日を与えるだけです、、、、、、plzヘルプ

これがhtmlです

            <div class="form-item">
            <label>
                <span class="required">*</span>
               date
            </label>

              <input type="text" readonly="readonly" value="" id="date" name="date" class="hasDatepicker">            
          </div>
           <div class="form-item">
            <label>
              due date
            </label>  
                 <input type="text" disabled="disabled" value="" id="due_date" name="due_date">               </div>
               <div class="form-item">
              <label>
                <span class="required">*</span>
                terms-of-oayment
                </label>

                <select class="" id="terms_of_payment" name="terms_of_payment">
                <option selected="selected" label="---------" value="">---------     
                </option>
                <option label="مستحقة الدفع لدى تسلمها" value="1">مستحقة الدفع لدى تسلمها</option>
                 <option label="مستحقة الدفع في غضون 15 يوما" value="15">مستحقة الدفع في غضون 15 يوما</option>
                 <option label="مستحقة الدفع في غضون 30 يوما" value="30">مستحقة الدفع في غضون 30 يوما</option>
                  <option label="مستحقة الدفع في غضون 45 يوما" value="45">مستحقة الدفع في غضون 45 يوما</option>
                   <option label="مستحقة الدفع في غضون 60 يوما" value="60">مستحقة الدفع في غضون 60 يوما</option>
                   <option label="مستحقة الدفع في غضون 90 يوما" value="90">مستحقة الدفع في غضون 90 يوما</option>
              </select>
                   </div>
4

2 に答える 2

3

次のように新しい日付を生成してみてください。

var edate = new Date(date.getTime() + days *24*60*60*1000);

JavaScript Date に日数を追加するも参照してください。

于 2012-05-05T18:13:48.227 に答える
3

ここで 2 つの問題:

  1. .getMonth()1 ~ 12 ではなく、0 ~ 11 を返します。http://www.w3schools.com/jsref/jsref_getmonth.aspを参照してください。

  2. たとえば、日付が 2012 年 1 月 31 日で、1 日追加するとします。2012 年 1 月 32 日となります。

理論的には、ユリウス日などにキャストしてから日を追加する方が成功するでしょう。または、JavaScript で日付の計算、書式設定、および解析を行うための優れたライブラリとして、http: //www.datejs.com/ を参照してください。

于 2012-05-05T18:14:34.343 に答える