Они одного типа или просто переводятся в одно и то же представление? Попробуйте изменить это на if ($('#id_checkin').datepicker('getDate').toString() == date.toString())
и посмотрите, что произойдет.
edit: относительно того, почему ... Это может быть потому, что одним из этих значений является какой-то странный объект даты. JavaScript будет пытаться привести типы, но, скорее всего, он будет работать только с теми типами, о которых он знает. Мое второе предположение состоит в том, что одна (или обе) из этих дат имеют ненулевую миллисекундную часть. Поскольку миллисекунды не включаются в выходные данные, вызываемые toString()
, возможно, они совпадают по своему строковому представлению, но не по фактическому значению. Попробуйте вывести свойство value
(при условии, что обе стороны являются действительными объектами Date) и посмотрите, что там происходит.