2013-11-08 3 views
0

Редактировать: Получил решение в ответ.eternicode Datepicker и Bootstrap3 checkin checkout

Может ли какой-нибудь эксперт помочь мне с кодом javascript?

У меня есть eternicode Datepicker работы с bootstrap3 (он работает, когда нажмите, чтобы выбрать дату) https://github.com/eternicode/bootstrap-datepicker/tree/bs3

Но теперь у меня есть две даты, Checkin и Checkout, и я хочу: При выборе проверку, он отключает дней < = Checkin. При выборе checkin, если после проверки, измените чек на +1 день после того, как выбран checkin.

У меня есть код html и javascript, но он не работает очень хорошо: Когда я выбираю checkin, день проверки - это день Сегодня, и он должен быть выбран checkin + 1day. Когда я выбираю checkout, он отключает только дни до текущего дня, работает только в том случае, если я выбираю день после дня регистрации.

Это шов, что это проблема с setValue checkout.

HTML-код (входы):

<div class="form-group"> 
    <label for="DtChkIn">Data Checkin</label> 
     <div class="input-group date" id="dp1"> 
     <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span> 
     <input type="text" class="form-control input-sm" id="DtChkIn" placeholder="Data CheckIn" readonly="readonly"> 
     </div> 
</div> 
<div class="form-group"> 
    <label for="DtChkOut">Data Checkout</label> 
     <div class="input-group date" id="dp2"> 
     <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span> 
     <input type="text" class="form-control input-sm" id="DtChkOut" placeholder="Data CheckOut" readonly="readonly"> 
     </div> 
</div> 

И JavaScript:

var nowTemp = new Date(); 
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0); 

var checkin = $('#dp1').datepicker({ 
    language: "pt", 
    format: "dd/mm/yyyy", 
    beforeShowDay: function (date) { 
     return date.valueOf() < now.valueOf() ? false : ''; 
    } 
}).on('changeDate', function (ev) { 
    if (ev.date.valueOf() > checkout.date.valueOf()) { 
     var newDate = new Date(ev.date); 
     newDate.setDate(newDate.getDate() + 1); 

     checkout.setValue(newDate); 
    } 

    checkin.hide(); 
    $('#DtChkOut').focus(); 
}).data('datepicker'); 

var checkout = $('#dp2').datepicker({ 
    language: "pt", 
    format: "dd/mm/yyyy", 
    beforeShowDay: function (date) { 
     return date.valueOf() <= checkin.date.valueOf() ? false : ''; 
    } 
}).on('changeDate', function (ev) { 
    checkout.hide(); 
}).data('datepicker'); 
+0

Эй, Марцио, я наткнулся на y наш вопрос и увидел, что вы нашли решение самостоятельно. Пожалуйста, добавьте свое решение в качестве ответа и примите его, чтобы люди могли мгновенно увидеть, что ваш вопрос имеет рабочий ответ. Спасибо! – snrlx

+0

Перемещено решение для ответа. :) –

ответ

0

SOLUTION: Сценарий, который работает с eternicode DatePicker BS3 филиал (CheckIN кассе)

var nowTemp = new Date(); 
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0); 

var checkin = $('#dp1').datepicker({ 

    beforeShowDay: function (date) { 
     return date.valueOf() >= now.valueOf(); 
    } 
}).on('changeDate', function (ev) { 
    if (ev.date.valueOf() > checkout.date.valueOf()) { 
     var newDate = new Date(ev.date) 
     newDate.setDate(newDate.getDate() + 1); 
     checkout.setValue(newDate); 
     checkout.setDate(newDate); 
     checkout.update(); 
    } 
    checkin.hide(); 
    $('#dp2')[0].focus(); 
}).data('datepicker'); 
var checkout = $('#dp2').datepicker({ 
    beforeShowDay: function (date) { 
     return date.valueOf() > checkin.date.valueOf(); 
    } 
}).on('changeDate', function (ev) { 
    checkout.hide(); 
}).data('datepicker'); 

Обратите внимание на строки, добавленные обновить дату CheckIN перед сравнением с рецэнзий:

checkout.setDate(newDate); 
    checkout.update(); 
Смежные вопросы