2015-04-24 2 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'); 
}); 

Спусковой нажмите на конце, чтобы открыть кал всплывающее окно. вы можете удалить это, если вы не хотите, чтобы это произошло автоматически.

проще скрипка: http://jsfiddle.net/16gov1ms/1/

+0

Большое спасибо за то, что вы нашли время объяснения вместе с демо. Однако он не работает, когда значение месяца изменяется, как в вашем примере, если я изменяю '01/01/2015 'на что-то вроде '04/01/2015', ответ искажается. Кроме того, я выполнил использование плагина moment.js, но ваш метод стал более тщательным и манипулируемым. Еще раз спасибо. –

+0

Искажение, которое вы видите, скорее всего, из формата. Формат - это дата в британском стиле, «4 января», а не «4 января». Ваш пример подразумевал, что измерение с «var day = splited_invoice_date [0];» в любом случае, рад, что вы его работали. – briansol

Смежные вопросы