Как проверить дату и время в DatePicker? - PullRequest
1 голос
/ 23 марта 2012

У меня есть два указателя даты и времени в форме для ввода времени начала и окончания.
Идентификатор времени начала равен «startTime», а идентификатор времени окончания - «endTime».

var startTime = document.getElementById("startTime");
var endTime = document.getElementById("endTime");

if (new Date(startTime.value).getTime() > new Date(endTime.value).getTime()) {
     alert("End Time should be greater than Start Time");
     return false;
}

Я попытался сравнить время начала и время окончания и подтвердил, что время начала не должно быть больше времени окончания.
Теперь я хочу написать подтверждение, чтобы время окончания должно было быть больше времени начала на 1 час.
sampleLink: DateTimePicker Пример

$('#startTime').datetimepicker({
    onClose: function(dateText, inst) {
        var endDateTextBox = $('#endTime');
        if (endDateTextBox.val() != '') {
            var testStartDate = new Date(dateText);
            var testEndDate = new Date(endDateTextBox.val());
            if (testStartDate > testEndDate)
                endDateTextBox.val(dateText);
        }
        else {
            endDateTextBox.val(dateText);
        }
    },
    onSelect: function (selectedDateTime){
        var start = $(this).datetimepicker('getDate');
        $('#endTime').datetimepicker('option', 'minDate', new Date(start.getTime()));
    }
});
$('#endTime').datetimepicker({
    onClose: function(dateText, inst) {
        var startDateTextBox = $('#startTime');
        if (startDateTextBox.val() != '') {
            var testStartDate = new Date(startDateTextBox.val());
            var testEndDate = new Date(dateText);
            if (testStartDate > testEndDate)
                startDateTextBox.val(dateText);
        }
        else {
            startDateTextBox.val(dateText);
        }
    },
    onSelect: function (selectedDateTime){
        var end = $(this).datetimepicker('getDate');
        $('#startTime').datetimepicker('option', 'maxDate', new Date(end.getTime()) );
    }
});

Я пытался с этим и получил время начала и время окончания одинаковыми. Но я не уверен, как увеличить время окончания на 1 час.

Например, если начальное время 03-23-2012 10:00 AM, конечное время должно быть 03-23-2012 11:00 AM. Может ли кто-нибудь помочь мне в этом, пожалуйста?

Спасибо

1 Ответ

1 голос
/ 23 марта 2012

Хорошо, это первая версия, которую вы хотите, и все остальное, что вы можете использовать для отладки.

** Окончательное решение добавляет + 1 ** http://jsfiddle.net/j82JJ/31/

демонстрация простой проверки даты http://jsfiddle.net/j82JJ/5/

Проверка времени http://jsfiddle.net/j82JJ/18/

Кроме того, если вы откомментируете код, который я прокомментировал, для генерации проверки, то вы никогда не попадете в ситуацию, когда вам потребуется проверка. :)

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

'Также обратите внимание:' если вы раскомментируете строку, которую я закомментировал в jsfiddle, datetimepicker никогда не позволит вам выбрать дату меньше, чем начальная дата для этого параметра.

HTML

<div style="margin: 15px;">
    <input id="example16_start" type="text" value="" name="test">
    <input id="example16_end" type="text" value="" name="test">
</div>
​

Подробности кода Jquery http://trentrichardson.com/examples/timepicker/ (Все 3 js fiddle содержат код Jquery) Первый должен быть вам откровенен:

Все, что вам нужно, это событие «OnSelect» даты начала, которое вы хотите сделать:

onSelect: function (selectedDateTime) {

  var startDate = $('#example16_start').datetimepicker('getDate');
   var endDate = new Date(parseFloat(startDate.setHours(startDate.getHours()+1)));

   //Get the ending date datepart
   var endDateDatePart = endDate.getFullYear() + '/' + endDate.getMonth() + '/' + endDate.getDate();

   //calculate the ending date time part including AM/PM
   var endDateTimePart;
   if (endDate.getHours() > 12) { endDateTimePart = endDate.getHours()-12 + ':' + endDate.getMinutes() + ' PM';} else {endDateTimePart = endDate.getHours() + ':' + endDate.getMinutes() + ' AM';}
   $('#example16_end').datetimepicker('setDate', endDateDatePart + ' ' + endDateTimePart );


}

* 1039.

** (я называю несколько переменных в jsfiddle как ваше имя srry)

это поможет, если вы хотите, я могу сократить код, но вы также можете сделать это, хорошая ссылка, ура!

...