2014-12-11 4 views
-1

Я пытаюсь получить некоторые значения, используя DatePicker.Расчет дат в DatePicker

Вот Jsfiddle, над которым я работаю. Мне удалось запустить его на начальном этапе, но мне нужна дополнительная помощь.

http://jsfiddle.net/vdpzzms2/2/

/** Days to be disabled as an array */ 
var disabledSpecificDays = ["12-25-2014", "12-31-2014"]; 



function disableSpecificDaysAndWeekends(date) { 
    var m = date.getMonth(); 
    var d = date.getDate(); 
    var y = date.getFullYear(); 



    for (var i = 0; i < disabledSpecificDays.length; i++) { 
     if ($.inArray((m + 1) + '-' + d + '-' + y, disabledSpecificDays) != -1 || new Date() > date) { 
      return [false]; 
     } 
    } 

    var noWeekend = $.datepicker.noWeekends(date); 
    return !noWeekend[0] ? noWeekend : [true]; 

} 


/** init datepicker */ 
$(document).ready(function() { 

    $('#datepicker').datepicker({ dateFormat: 'dd-mm-yy' }).val(); 

    $('#datepicker').datepicker({ 
     beforeShowDay: disableSpecificDaysAndWeekends 
    }); 




}); 
  1. Может дата быть в формате "ДД, г ММ, уу"

  2. Может дата по умолчанию шоу-в поле Current Date, когда текстовое поле грузы (до того, как я выберет дату)

  3. Рассчитать стоимость доставки и доставки Даты

ответ

0

Вашего первые два вопроса довольно прямолинеен, но я не уверен в формате дату вы хотите, пример может помочь, но изменить его, просто измените строку для значения по умолчанию и dateFormat опцию в datepicker инициализация.

Я знаю, что это внешняя библиотека, но moment.js отлично подходит для общения с датами, продолжительностью и форматированием.

Ваш третий вопрос довольно сложный и, вероятно, должен быть его собственным вопросом о SO.

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

/** Days to be disabled as an array */ 
var disabledSpecificDays = ["12-25-2014", "12-31-2014"]; 

function disableSpecificDaysAndWeekends(date) { 
    var m = date.getMonth(); 
    var d = date.getDate(); 
    var y = date.getFullYear(); 

    for (var i = 0; i < disabledSpecificDays.length; i++) { 
     if ($.inArray((m + 1) + '-' + d + '-' + y, disabledSpecificDays) != -1 || new Date() > date) { 
      return [false]; 
     } 
    } 

    var noWeekend = $.datepicker.noWeekends(date); 
    return !noWeekend[0] ? noWeekend : [true]; 

} 


/** init datepicker */ 
$(document).ready(function() { 

    // get today's date and format it 
    var today = new Date(); 
    // zero pad the date and month incase they are less than 10 
    var dd = ("0" + today.getDate()).slice(-2); 
    var mm = ("0" + (today.getMonth() + 1)).slice(-2); // January is 0! 
    var yyyy = today.getFullYear(); 


    var day_names = [ 
     'Sunday', 
     'Monday', 
     'Tuesday', 
     'Wednesday', 
     'Thursday', 
     'Friday', 
     'Saturday' 
    ]; 

    var month_names = [ 
     'January', 
     'February', 
     'March', 
     'April', 
     'May', 
     'June', 
     'July', 
     'August', 
     'September', 
     'October', 
     'November', 
     'December' 
    ]; 

    var day_name = day_names[today.getDay()]; 
    var month_name = month_names[today.getMonth()]; 

    $('#datepicker').val(day_name + ', ' + dd + ' ' + month_name + ', ' + yyyy); 

    $('#datepicker').datepicker({ 
     dateFormat: 'DD, d MM, yy', 
     beforeShowDay: disableSpecificDaysAndWeekends 
    }); 

}); 

http://jsfiddle.net/vdpzzms2/3/

Update

Это немного грязный и может быть сделано лучше через промежуточную функцию, которая заботится о логике или с помощью внешней библиотеки, но здесь вы идете (не принимаются во внимание выходные или инвалиды):

$('#datepicker').datepicker({ 
    dateFormat: 'DD, d MM, yy', 
    beforeShowDay: disableSpecificDaysAndWeekends, 
    onSelect: function(date) { 
     // alert(date); 
     var selected_date = new Date(date); 
     var shipping_date = new Date(date); 
     shipping_date.setDate(shipping_date.getDate() + 4); 
     var delivery_date = new Date(date) 
     delivery_date.setDate(delivery_date.getDate() + 5); 

     var shipping_dd = ("0" + shipping_date.getDate()).slice(-2); 
     var shipping_mm = ("0" + (shipping_date.getMonth() + 1)).slice(-2); //January is 0! 
     var shipping_yyyy = shipping_date.getFullYear(); 
     var shipping_day_name = day_names[shipping_date.getDay()]; 
     var shipping_month_name = month_names[shipping_date.getMonth()]; 

     var formatted_shipping_date = shipping_day_name + ', ' + shipping_dd + ' ' + shipping_month_name + ', ' + shipping_yyyy; 

     var delivery_dd = ("0" + delivery_date.getDate()).slice(-2); 
     var delivery_mm = ("0" + (delivery_date.getMonth() + 1)).slice(-2); //January is 0! 
     var delivery_yyyy = delivery_date.getFullYear(); 
     var delivery_day_name = day_names[delivery_date.getDay()]; 
     var delivery_month_name = month_names[delivery_date.getMonth()]; 

     var formatted_delivery_date = delivery_day_name + ', ' + delivery_dd + ' ' + delivery_month_name + ', ' + delivery_yyyy; 

     $('#ShippingDate').val(formatted_shipping_date); 
     $('#DeliveryDate').val(formatted_delivery_date); 

    } 
}); 

http://jsfiddle.net/vdpzzms2/7/

+0

Спасибо Martin. Я отформатировал код, чтобы теперь было ясно. Вот ссылка http://jsfiddle.net/vdpzzms2/4/ Мартин, я хочу получить сегодняшнюю дату в переменной TodayDate, а затем добавить к ней 3 дня, а затем отобразить ее в текстовом поле с именем Дата доставки и то же самое в доставке Дата с добавлением 4 дней. Пожалуйста помоги. – Krishnam

+0

@ Кришнам Я обновил ответ. – martincarlin87

1

Я думаю, что я решил все три вопроса твоего

проверки этого fiddle

/** Days to be disabled as an array */ 
var disabledSpecificDays = ["12-25-2014", "12-31-2014"]; 

function disableSpecificDaysAndWeekends(date) { 
    var m = date.getMonth(); 
    var d = date.getDate(); 
    var y = date.getFullYear(); 

    for (var i = 0; i < disabledSpecificDays.length; i++) { 
     if ($.inArray((m + 1) + '-' + d + '-' + y, disabledSpecificDays) != -1 || new Date() > date) { 
      return [false]; 
     } 
    } 

    var noWeekend = $.datepicker.noWeekends(date); 
    return !noWeekend[0] ? noWeekend : [true]; 
} 

function calc(dateInText){ 
    var dateObj = new Date(dateInText); 
    var tmrw = new Date(dateInText); 
    var shipD = 0; 
    while(shipD != 5){ 
     tmrw.setDate(tmrw.getDate() + 1); 
     if(disableSpecificDaysAndWeekends(tmrw)[0]){ 
      shipD++; 
     } 
    } 
    $('#ShippingDate').val($.datepicker.formatDate('DD, d MM, yy',tmrw)); 
    var delD = 0; 
    while(delD != 6){ 
     dateObj.setDate(dateObj.getDate() + 1); 
     if(disableSpecificDaysAndWeekends(dateObj)[0]){ 
      delD++; 
     } 
    } 
    $('#DeliveryDate').val($.datepicker.formatDate('DD, d MM, yy',dateObj)); 
} 

/** init datepicker */ 
$(document).ready(function() { 
    var $now = new Date(); 
    $now.setDate($now.getDate() + 1); 
    $('#datepicker').val($.datepicker.formatDate('DD, d MM, yy',$now)).datepicker({ 
     dateFormat: 'DD, d MM, yy', 
     beforeShowDay: disableSpecificDaysAndWeekends, 
     onClose : calc 
    }); 
    calc($now); 
}); 

UPDATE

Проверить this обновленный код

+0

Большое спасибо @Cerlin. Этот код не в моих силах. Серлин Я внес несколько изменений в объяснение текстовых полей. Не могли бы вы проверить его, когда найдете время и настроили его? http://jsfiddle.net/iamkrishnam/j8r622bf/4/ – Krishnam

+0

прекрасная мелодия какой? Я не уверен, о чем вы спрашиваете. (я думаю, что функциональность работает так, как надо). Протестируйте функциональность и дайте отзыв) –

+0

Прежде всего, я благодарю вас от всего сердца. Ваш код просто идеален, и я ничего не говорю по этому поводу. Я просто сделал свои объяснения намного лучше и увеличил размер шрифта, чтобы текст был чистым для чтения. Спасибо, что нашли время и вернулись ко мне. – Krishnam