2012-02-21 4 views
0

Я сравниваю две даты, и мой код выглядит следующим образом.Сравнение строк JQuery?

jQuery('.newAppointment a.ui-state-default').click(function() { 
    var date = jQuery(this).parent().attr('title'); 
var d = jQuery.datepicker.parseDate('dd/mm/yy',date.toString()); 
    alert(d); 
    var today = new Date; 
    var t = jQuery.datepicker.parseDate('dd/mm/yy',today.toString()); 
    alert(t) 
    if(t > d){ 
    url = "https://stackoverflow.com/users/" + user_id + "/events/new?type=Surgery"+"&day=" + escape(date);; 
    window.location = url; 
    }else{ 
    alert("you cannot add appointment to past dates"); 
    } 
}); 

, но я получаю ошибку в firebug. неперехваченное исключение: отсутствующий номер в позиции 0 может кто-нибудь сказать мне, где я делаю неправильно.

+0

Может Firebug скажите, в какой строке происходит ошибка? – nnnnnn

ответ

3

Из fine manual:

parseDate (формат, значение настройки)
[...]
Можно исключить ряд исключений:

  • «Недостающее количество в позиции пп», если формат указывается числовое значение, которое не то нашел

Так что ваша ошибка происходит из-JQuery UI. Формат, который вы получаете от date.toString(), зависит от браузера и локали, нет причин ожидать, что он всегда будет dd/mm/yy, и в вашем случае это не так.

Ваш date уже строка и в известном формате (предположительно dd/mm/yy), так что вы должны быть в состоянии сделать это:

var d = jQuery.datepicker.parseDate('dd/mm/yy', date); 

, чтобы получить дату. Тогда вы можете получить today только с:

var today = new Date; 

и сравнить их непосредственно:

if(today > d) 

Если вы хотите, чтобы выбросить часы, минуты и секунды, то:

var now = new Date; 
// Or set milliseconds, seconds, minutes, and hours to zero. 
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); 
if(today > d) 
0

может быть есть какая-то проблема с parseDate() Вы можете сравнить даты только с помощью только

if (today > date){...} 
+0

объекты даты могут быть непосредственно сопоставлены –

+0

Я пробовал это, но каждый раз, когда он переходил в другую часть. Мой код выглядит следующим образом: jQuery ('. NewAppointment a.ui-state-default'). Click (function() { var date = jQuery (this) .parent(). attr ('title'); var today = new Date(); if (today> date) { url = "/ users /" + user_id + "/ events/new? type = Surgery «+» & day = «+ escape (date) ;; window.location = url; } else { предупреждение (« вы не можете добавить встречу в прошлые даты »); } }); –