$eg@ru$
Мыслитель
(7593)
4 года назад
Uncaught TypeError: date.split is not a function
at millisec
Мне кажется она вызывается потому что в функции ты возвращаешь объект Date, а split работает только со строкой.
Попробуй вернуть строку, и сравни.
P.S Совет, используй Moment.js для работы со временем, твой код уменьшится в 2 раза. Там есть все функции для манипуляции с датами (сложение, вычитание, получение даты из строки, сравнения и т. д)
$('.d-not').each(function(idx, obj)
{
var dt = $(obj).attr("data-inp"),
valw = 0,
valf = 0,
DatExp = new RegExp(/^(0[1-9]|[12][0-9]|3[01])[\.](0[1-9]|1[012])[\.](19[7-9]\d|2\d\d\d)$/);
/*Если d-not первый input в строке таблицы*/
if (dt == 1)
{
valw = $(obj).val().trim();
/*Если длина одного из input(ов) равна нулю*/
if (valw.length === 0)
{
$(obj).attr('checked', false);
/*Иначе если один из input(ов) не соответствует регулярке*/
} else if (!valw.match(DatExp))
{
$(obj).attr('checked', false);
/*В любом ином случае, ставим флажок checked*/
} else
{
$(obj).attr('checked', true);
}
/*Иначе если d-not второй input в строке таблицы*/
} else if (dt == 2)
{
valf = $(obj).val().trim();
/*Если длина одного из input(ов) равна нулю*/
if (valf.length === 0)
{
$(obj).attr('checked', false);
/*Иначе если один из input(ов) не соответствует регулярке*/
} else if (!valf.match(DatExp))
{
$(obj).attr('checked', false);
/*Иначе если дата во втором поле, меньше или равна дате в первом поле*/
} else if (millisec(valw) >= millisec(valf))
{
$(obj).attr('checked', false);
/*В любом ином случае, ставим флажок checked*/
} else
{
$(obj).attr('checked', true);
}
}
});
Из-за проверки двух полей друг с другом:
else if (millisec(valw) >= millisec(valf))
возникает ошибка следующего вида:
Uncaught TypeError: date.split is not a function
at millisec
Сама функция выглядит так:
function millisec(date)
{
return new Date(date.split('.').reverse()).getTime();
}
Как проверить, что второе поле в строке таблицы, содержит дату не меньше и не равную дате, в первом поле той же строки таблицы?
P.S.: Если из условия убрать else if (millisec(valw) >= millisec(valf)), то оно выполняется идеально и без ошибок.