2015-04-24 85 views
1

我正在開發php中的發票生成程序。其中我使用datetimepicker來使用發票生成日期和截止日期。現在,我希望通過在發票生成日期域中添加特定值來自動填充到期日期字段。以下是我的html:日期添加公式javascript

<div class = "col-lg-4"> 
       <select id = "invoice_duration" class="form-control input-group placeholder"> 
        <option>10</option> 
        <option>20</option> 
        <option>30</option> 
        <option>40</option> 
        <option>50</option> 
        <option>50</option> 
       </select> 
       </div><br><br> 

       <div class = "col-lg-6"> 
        <h4> Invoice Date </h4> 
        <div class="input-append date datetimepicker"> 
         <input id = "invoice_date" style = "height : 35px;" style = "height : 30px;" style = "height : 30px;" type="text" name = "invoice_date"> 
         <span style = "height : 35px;" class="add-on"> 
         <i style = "padding-top:5px;" data-time-icon="fa fa-time" data-date-icon="fa fa-calendar"></i> 
         </span> 
        </div>      
       </div> 


       <div class = "col-lg-6"> 
       <h4> Due Date </h4> 
        <div class="input-append date datetimepicker"> 
         <input id = "due_date" style = "height : 35px;" style = "height : 30px;" type="text" name = "due_date"> 
         <span style = "height : 35px;" class="add-on"> 
          <i style = "padding-top:5px;" data-time-icon="fa fa-time" data-date-icon="fa fa-calendar"></i> 
         </span> 
        </div> 
       </div> 

然後我的腳本如下:

<script> 
    $("#due_date").click(function() { 

     var invoice_date = $("#invoice_date").val(); 
     var invoice_duration = $("#invoice_duration").val(); 

     var splited_invoice_date = invoice_date.split("/"); 
     var day = splited_invoice_date[0]; 
     var month = splited_invoice_date[1]; 
     var year = splited_invoice_date[2]; 
     var total_days = (+year_days) + (+month_days) + (+days); 
     alert('day :' +day+ 'Month :' +month+ 'Year :' +year); 

     }); 

使用這個我成功地得到警報給我的隔離日期。現在可以輕鬆地從「select」字段中添加值並將其添加到invoice_generation_date以最終獲得某些內容放入due_date字段。

基本上我想要一個日期添加公式。對不起,如果我不明確。

在此先感謝。

+1

你可以看看http://momentjs.com/您的日期相關的需求。 PS。這些風格屬性是怎麼回事? – Andy

+0

謝謝安迪,我用moment.js完成了它。哈哈,這些屬性只是看着他們。實際上給了我的一個學生創建一個表格的任務。對於那個很抱歉。 –

回答

1

我會在更改前一個字段時觸發事件,而不是輸入點擊。

在js中添加日期的最簡單方法是在一天中使用秒,然後使用格式化基元。

像這樣的東西應該工作:

$("#invoice_date").change(function(){ 
    var invoice_date = $("#invoice_date").val(); 
    var invoice_duration = parseInt($("#invoice_duration").val(),10); 

    var d = new Date(invoice_date).getTime()+(invoice_duration*24*60*60*1000); 
    d = new Date(d); 
    var dFormatted = d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear(); 

    $("#due_date").val(dFormatted).trigger('click'); 
}); 

末的點擊觸發條件是打開CAL彈出窗口。如果你不想讓它自動發生,你可以刪除它。

簡單小提琴:http://jsfiddle.net/16gov1ms/1/

+0

非常感謝您花時間與演示一起解釋。然而,如果我將'01/01/2015'更改爲'04/01/2015'之類的東西,月份值如同您的示例中那樣發生變化,那麼它似乎不起作用,答案會扭曲。此外,我已經完成了使用moment.js插件,但您的方法更徹底和可操作。再次感謝你。 –

+0

您看到的失真可能來自格式。格式是英國風格的日期,「1月4日」而不是「1月4日」你的例子暗示該維度'var day = splited_invoice_date [0];'無論如何,很高興你得到它的工作。 – briansol