2015-11-27 4 views
0

Этот код, приведенный ниже, должен показывать окно предупреждения, если выбрана неправильная дата и/или время.Как проверить дату и время с помощью JavaScript

Проблема, с которой я столкнулся, если я выбрал 25/11/2015 и выберет 11:00. Это показывает «Пожалуйста, измените дату или время». Если я тогда выбираю 25/11/2015 и выбираю 21:00, это показывает «Это хорошо».

Функция игнорирует дату и просто проверяет время.

Он должен показать сообщение «Пожалуйста, измените дату или время», если пользователь выбирает время, которое уже ушло или дата, которая была до сегодняшнего дня.

Надеюсь, я смогу получить помощь в решении этой проблемы. Заранее спасибо.

function myFunction() { 
 
    var today = new Date(); 
 
    var select_text = document.getElementById("datepicker-leave").value; 
 
    var select_date = new Date(select_text); 
 
    var select_time = document.getElementById("leavedrop").value; 
 
    var curr_time = today.getHours() + 1; 
 

 
    if ((select_date.getTime() <= today.getTime()) && select_time < curr_time) { 
 
    alert("Please change Date or Time") 
 
    } else { 
 
    alert("That's Fine") 
 
    } 
 
} 
 

 
<script> 
 
    $(function() { //datepickers 
 
     $("#datepicker-leave).datepicker({    
 
     dateFormat: 'd-M-yy'}); 
 
    }); 
 
</script>
<input type="text" id="datepicker-leave"> 
 

 
<select id="leavedrop"> 
 
    <option value="0">00:00</option> 
 
    <option value="1">01:00</option> 
 
    <option value="2">02:00</option> 
 
    <option value="3">03:00</option> 
 
    <option value="4">04:00</option> 
 
    <option value="5">05:00</option> 
 
    <option value="6">06:00</option> 
 
    <option value="7">07:00</option> 
 
    <option value="8">08:00</option> 
 
    <option value="9">09:00</option> 
 
    <option value="10">10:00</option> 
 
    <option value="11">11:00</option> 
 
    <option value="12">12:00</option> 
 
    <option value="13">13:00</option> 
 
    <option value="14">14:00</option> 
 
    <option value="15">15:00</option> 
 
    <option value="16">16:00</option> 
 
    <option value="17">17:00</option> 
 
    <option value="18">18:00</option> 
 
    <option value="19">19:00</option> 
 
    <option value="20">20:00</option> 
 
    <option value="21">21:00</option> 
 
    <option value="22">22:00</option> 
 
    <option value="24">23:00</option> 
 
</select> 
 

 
<input type="button" value="Submit" onClick="myFunction()" />

+0

Рассмотрите возможность использования moment.js для всех манипуляций и проверки даты. – Marko

+0

Почему вы сравниваете даты .getTime()? Вы не устанавливаете время в select_date. Также указатель, для 23:00, значение равно 24. Кроме того, element.value возвращает строку. Не уверен, что что-то из этого вызывает проблему, но вы должны их проверить. – Rajesh

ответ

1

Прошу нижеследующую структуру для организации

**$("#date").datepicker({ dateFormat: 'dd/mm/yy' });** 

Тогда попробуйте это

$(function() { 
$("#date").datepicker({ 
dateFormat: 'd MM, yy', 
onSelect: function(dateText, inst) { 
    var stop = dateText.indexOf(','); 
    alert(dateText.substring(0, stop)); 
} 
}); 

});

В боковой части вы выбираете предупреждение.

Я надеюсь, что это должно помочь

Благодарности

+0

Не работает ... – AnotherUser

+0

сначала скажите мне, что вы хотите, точно, хотите ли вы проверять поле даты или хотите отформатировать поле даты – Mahadevan

+0

Я хочу, чтобы оно отображало предупреждающее сообщение, которое я выбрал вчера. – AnotherUser

0

Это не работает, потому что вы не вводите дату в нужном формате

Вы должны использовать формат (YYYY-MM-DD), чтобы заставить его работать

для вашего примера поставить дату, 2015-11-25

+0

Формат даты, который я использую, - 'd-M-yy'. Я добавлю код JQuery – AnotherUser

+0

@ imraanstack1 вы хотите проверить текстовое поле – Mahadevan

0

Похоже, что дата объекта в JavaScript довольно слаб без каких-либо добавок. Я нашел довольно полезную библиотеку DateJS, которая дает вам несколько мощных методов для решения вашей проблемы.

Вот также небольшой справочник от Datejs.

Например, вы можете использовать метод Equals: Date.equals(Date.today(), pickedDate());

Вы должны прочитать немного по документации, чтобы достичь своей цели.