Из обновленного JSFiddle строка таблицы выглядит примерно так:
<tr class="acf-row">
<td>
<div class="acf-input">
<div>
<input class="input hasDatepicker" type="text" value="26.03.2020">
<input class="input hasDatepicker" type="text" value="10:00">
</div>
</div>
</td>
</tr>
И теперь проблема становится понятной. В JS, .each()
перебирает все с классами .input
и .hasDatepicker
. Оба ваших входа соответствуют этому, поэтому он проверит их оба. Если значение одного из них не соответствует вашему filterdate
, эта строка будет скрыта. Но 2-е входное значение - это время, и оно никогда не будет соответствовать дате, независимо от того, какая дата - поэтому каждая строка всегда будет скрыта.
Существует 2 очевидных способа решения этой проблемы - 1) сделать входы различимы, так что вы можете выбрать только дату, указанную при сравнении фильтров, ИЛИ 2) каким-то образом нацелить только первый вход в наборе 2.
Первый вариант (сделать их различим), безусловно, лучший, так как второй опирается на макет HTML. В будущем может случиться, что вы сделаете редизайн, и входные данные будут не в том же порядке или даже в том же <div>
, и тогда ваш JS сломается. Это может даже произойти, если вы этого не сделаете или даже не узнаете об этом, если HTML автоматически сгенерирован какой-то сторонней библиотекой (например, ACF / Wordpress), и обновление плагина меняет дело. Но если вы можете различить guish входов, то вы можете выбрать нужные, независимо от того, где они находятся на странице.
Чтобы сделать их различимыми, вы можете добавить класс, например:
<input class="input hasDatepicker date" type="text" value="26.03.2020">
Затем обновите ваш JS, чтобы он был нацелен только на:
$('.input.hasDatepicker.date').each(function(i) {
Если изменение HTML не вариант, вам придется положиться и использовать положения. Вместо этого выполните итерацию по всем div.acf-input
с и найдите первый вход в каждом:
$('div.acf-input').each(function(i) {
var dateinfield = $(this).find('input.input.hasDatepicker').first().val();
// ...
Рабочий JSFiddle (из варианта 2).