2015-05-01 4 views
0

Я пытаюсь скрыть диапазон элементов div, которые не соответствуют заданной дате() после итерации через набор. Но поскольку даты находятся в двух разных форматах, перед выполнением сравнения мне нужно преобразовать их в один стандартный формат. К сожалению, это не работает, хотя даты совпадают, все элементы div скрыты. Кто-нибудь знает, что происходит не так? Благодарю.Сравнение даты после разбора не работает

Jsfiddle: http://jsfiddle.net/ss308rwa/

HTML

<input type="text" class="form-control date" value="04/06/2015"> 
<button type="button" class="btn btn-primary" id="search-button">Search</button> 
<div class="rideshare-item" data-date="2015-06-04">04/06/2015</div> 
<div class="rideshare-item" data-date="2015-06-05">05/06/2015</div> 

JS

$('body').on('click', '#search-button', function (event) { 
    var date = $('.date').val().trim(); 
    $('.rideshare-item, .no-result').hide(); 
    $('.rideshare-item').each(function (a, b) { 
     var rideshareDate = $(b).data('date'); 
     if (date.length == 0) { 
      $(this).closest('.rideshare-item').show(); 
     } else if (date.length > 0) { 
      var timestamp = Date.parse(date) 
      if (isNaN(timestamp) == false) { 
       if (parseDateEntry(date) == parseDateAttribute(rideshareDate)) { 
        $(this).closest('.rideshare-item').show(); 
       } 
      } 
     } 
    }); 
}); 

function parseDateEntry(input) { 
    var parts = input.split('/'); 
    // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) 
    return new Date(parts[2], parts[1] - 1, parts[0]); 
} 

function parseDateAttribute(input) { 
    var parts = input.split('-'); 
    // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) 
    return new Date(parts[0], parts[1] - 1, parts[2]); 
} 
+0

В поле ввода можно указать только одну дату? если да, то как можно «скрывать диапазон дат», если пользователь указывает только одну дату. – Lucky

+0

Этот [ответ] (http://stackoverflow.com/a/14629978/2030565) объясняет, почему 'parseDateEntry (date) == parseDateAttribute (rideshareDate) 'терпит неудачу. – Jasen

ответ

2

изменение parseDateEntry(date) == parseDateAttribute(rideshareDate)

до parseDateEntry(date).getTime() == parseDateAttribute(rideshareDate).getTime()

будет работать.

+0

Сравнение объекта Date всегда возвращает false, хотя время находится в одной точке. "var a = new Date(); var b = new Date (a.getTime()); a == b" возвращает false. – Surely

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