2016-10-28 6 views
0

Мне нужно проверить ввод даты, чтобы она попала между (включая) 9/1/2016 и 31/7/2017. Из этой функции я пытаюсь вызвать новую функцию для печати этой даты пользователю. Следующий код, похоже, работает, но вызывает предупреждение (9/1/2016) и не выводит результат с помощью функции Holiday().Подтверждение ввода даты ввода

function validate() 
{ 

    var y= document.getElementById("userdate").value; 
    var x= new Date(y); 
    var minDate = new Date('09/01/2016'); 
    var maxDate = new Date('08/31/2017'); 

    if (x >= minDate && x <= maxDate){ 
     Holiday(); 
    } 
    else{ 
     alert('Date must be between 9/1/2016 and 8/31/2017'); 
    } 
} 

function Holiday() { 

    var x = document.forms[0].elements[0].value; 
    var mydate = new Date(x); 
    txt += "The date that user entered is " + mydate + "<p>"; 
    var day = mydate.getUTCDate(); 
    var month = mydate.getMonth() + 1; 
    var year = mydate.getFullYear(); 
    document.getElementById("display").innerHTML = "Fomatted date " + month + "/" + day + "/" + year; 
} 
+1

_ "но вызывает предупреждение для (9/1/2016)" _ - нет, это не так: https://jsfiddle.net/vo0axk10/ – CBroe

+0

Вопросы, о которых нужно подумать: работают ли все браузеры со строкой даты в этом формате передается конструктору 'Date'? Как насчет часовых поясов? Есть ли причина, чтобы избежать современных удобств и кода JS, как в 1998 году? – Sorpigal

+1

Получите дату один раз, а не дважды, используя два разных метода. – LinuxDisciple

ответ

0

PLUNKER

Это, кажется, работает хорошо для меня

function validate() { 
    //var y= document.getElementById("userdate").value; //COMMENTED OUT 
    var x = new Date('09/01/2016'); //DEFAULT TO 
    var minDate = new Date('09/01/2016'); 
    var maxDate = new Date('08/31/2017'); 
    debugger; 
    if (x >= minDate && x <= maxDate) { 
    Holiday(x); // PASS THE VALUE 
    } else { 
    alert('Date must be between 9/1/2016 and 8/31/2017'); 
    } 
} 

function Holiday(theDate) { //RECIEVE THE VALUE 
    var mydate = theDate; 
    var day = mydate.getUTCDate(); 
    var month = mydate.getMonth() + 1; 
    var year = mydate.getFullYear(); 
    document.getElementById("display").innerHTML = "Fomatted date " + month + "/" + day + "/" + year; 
} 

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

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