Я думаю, что мне удалось решить мою проблему, но в то же время, я думаю, что я, возможно, обнаружил ошибку (?) В коде даты jquery ui
Прежде чем идти дальше, позвольте мне сказать, что я новичок в jquery / javascript и буду признателен за любую информацию, представленную ниже.
Чтобы напомнить о проблеме, я использую asp.net mvc и пытаюсь показать ~ 80 сборщиков данных на странице. Для любого средства выбора даты в начальном окне просмотра указатели даты располагаются нормально. Однако, когда я прокручиваю вниз, средства выбора даты по-прежнему отображаются в верхней части экрана.
Я начал просматривать исходный код и делать некоторую отладку. Я заметил, что степень смещения указателя даты в верхнюю часть экрана была прямо пропорциональна величине, на которую я прокручивал, т.е. больше прокрутки = большее смещение.
Ключевая проблема в коде, который я обнаружил (см. Ниже), заключается в том, что когда код работает, где разместить указатель даты, он не учитывает, как далеко вниз прокручивается экран пользователя:
_showDatepicker:
function(input) {
input = input.target || input;
//....more code...
if (!$.datepicker._pos) { // position below input
$.datepicker._pos = $.datepicker._findPos(input);
$.datepicker._pos[1] += input.offsetHeight; //add the height
}
В последней строке метод offsetHeight не учитывает, насколько вы прокрутили экран вниз.
Если вы обновите эту строку до следующей, это решит проблему, которую я поднял:
$.datepicker._pos[1] += input.offsetHeight + document.documentElement.scrollTop; //add the height
Это просто получает позицию полосы прокрутки и добавляет ее к offsetHeight, чтобы получить правильную позицию.
В интересах полного раскрытия информации я не совсем уверен, почему это работает, и был бы признателен за некоторое понимание.
Я потратил ~ 3 дня на эту проблему и исследовал сеть, и это лучшее, что я могу придумать.
Интересно, что на форумах jquery был похожий запрос:
Нажмите здесь, чтобы посмотреть
Читая отчет, можно предположить, что в предыдущей версии до 1.8 была исправлена ошибка?
Спасибо