2013-12-05 6 views
0

я пытаюсь сравнить две даты from date and to date следующие мой метод:дата JavaScript бросками Invalid Дата

function isValidDate() { 
     var fromDate =""; 
     var toDate =""; 

     var fromDateTemp = $("#fromRequestDate").val(); //2013-12-05 
     var toDateTemp = $("#toRequestDate").val(); //2013-12-01 

     if(fromDateTemp.length != '0' && toDateTemp.length != '0'){ 
      fromDate = new Date(fromDateTemp); 
      toDate = new Date(toDateTemp); 
     } 

     if (fromDate.length != '0' || toDate.length != '0') { 
      $("#validationMessage").text("Please Select From Date and To Date"); 
      return false; 

     } else if (fromDate.getDate() > toDate.getDate()) { 
      $("#validationMessage").text("From Date is greater than To Date"); 
      return false; 

     } else { 
      $("#validationMessage").text(""); 
      return true; 

     } 
    } 

, но я получаю Ivalid Date, а также undefined при расчете длины.

поэтому, пожалуйста, помогите мне найти проблему.

Благодаря

+0

'fromDateTemp.length! =«0'' Не сравнивайте целые числа и строки. Просто сравните непосредственно с целым числом '0'. И мы не можем вам помочь, если вы не укажете значение, передаваемое 'Date()'. Вы могли бы пропустить что-нибудь там, как мы можем догадаться, какая ценность может вызвать проблему? – meagar

+0

@meagar, пожалуйста, просмотрите образцы значений, которые я редактировал с помощью вопросов, что произойдет, если '$ (" # fromRequestDate "). Val()' не имеет значения ??? – SAR

ответ

1

Вот исправленные ЯШ:

Demo

function isValidDate() { 
     var fromDate = null; 
     var toDate = null; 

     var fromDateTemp = $("#fromRequestDate").val(); 
     var toDateTemp = $("#toRequestDate").val(); 

     if(fromDateTemp.length != 0 && toDateTemp.length != 0){ 
      fromDate = new Date(fromDateTemp); 
      toDate = new Date(toDateTemp); 
     } 

     if (fromDate == null || toDate == null) { 
      $("#validationMessage").text("Please Select From Date and To Date"); 
      return false; 

     } else if (fromDate.getTime() > toDate.getTime()) { 
      $("#validationMessage").text("From Date is greater than To Date"); 
      return false; 

     } else { 
      $("#validationMessage").text(""); 
      return true; 

     } 
    } 
+0

Спасибо, он сделал то, что хотел. +1. Спасибо, что сэкономил время – SAR

2

Мы обычно сравниваем два дат с использованием getTime (он возвращает количество миллисекунд, прошедших с 1970 года)

Итак,

fromDate.getTime() > toDate.getTime() 

должны работать. При условии, конечно, что значения, принимаемые от #fromReqDate и #toReqDate являются экземплярами Date (простой проверки fromDate instanceOf Date должны возвращать true)

2

Я думаю, что ошибка заключается в проверке if (fromDate.length == '0' || toDate.length == '0') ваше состояние вместо этого вы использовали if(fromDateTemp.length != '0' && toDateTemp.length != '0') Проверяй код и вернуться, если вы столкнулись с проблемой.

var fromDate =""; 
var toDate =""; 

var fromDateTemp = '2013-12-05'; //2013-12-05 
var toDateTemp = '2013-12-01'; //2013-12-01 

if(fromDateTemp.length != '0' && toDateTemp.length != '0'){ 
    fromDate = new Date(fromDateTemp); 
    toDate = new Date(toDateTemp); 
} 

if (fromDate.length == '0' || toDate.length == '0') { 
    alert("Please Select From Date and To Date"); 
    return false; 

} else if (fromDate.getDate() > toDate.getDate()) { 
    alert("From Date is greater than To Date"); 
    return false; 

} else { 
    alert(""); 
    return true; 

} 
2

Попробуйте использовать это.

if(isNaN(new Date(fromDateTemp))) 
{ 
    alert("Please enter a valid from date"); 
    return; 
} 
2
var fromDateTemp = $("#fromRequestDate").val(); //2013-12-05 
var toDateTemp = $("#toRequestDate").val(); //2013-12-01 

вместо этих два коды просто заменить следующие коды

var fromDateTemp = new Date(''+$("#fromRequestDate").val()); //2013-12-05 
var toDateTemp = new Date(''+$("#toRequestDate").val()); //2013-12-01 
Смежные вопросы