强制 jQuery UI 日期选取器显示在输入字段下方

Force jQuery UI Datepicker to display below input field

本文关键字:输入 字段 显示 jQuery UI 日期 选取 强制      更新时间:2023-09-26

>我有一个页面,其中包含一个表单和几个字段。我的问题如下:

  1. 我正在尝试强制jQuery UI日期选择器显示在输入字段下方。
  2. 当我单击输入字段时,我希望该字段也滚动到页面顶部。我想我有这个工作。

这是我的jQuery:

JQUERY:

$( document ).ready(function() {
    // Set Datepicker
    $(".datepicker").datepicker();
    $("input").focus(function () {
       $('html, body').animate({ scrollTop: $(this).offset().top - 25 }, 10);
   });
});

链接到小提琴:https://jsfiddle.net/MauriceT/0qfycgm1/10/

以下是我想避免的:

日期选取器显示在输入字段上方

任何建议将不胜感激。谢谢!

您可以通过设置日期选择器弹出窗口的CSS来实现目标。

使用下面的代码来设置 CSS,使用 setTimeout 是为了避免 CSS 的覆盖。

在这里,我找到了日期时间选择

器文本框的顶部和左侧,并使用这些值来设置日期时间选择器弹出窗口的位置

有关之前显示事件的信息,请在此处查看。

https://api.jqueryui.com/datepicker/#option-beforeShow

    $(".datepicker").datepicker({
    beforeShow: function (input, inst) {
        setTimeout(function () {
            inst.dpDiv.css({
                top: $(".datepicker").offset().top + 35,
                left: $(".datepicker").offset().left
            });
        }, 0);
    }
}); 

这是小提琴:https://jsfiddle.net/0qfycgm1/14/

一个简单的解决方法是使用 CSS 调整日历框的前端。

将以下内容添加到您的 CSS 文件中。

    .ui-datepicker{
        margin-top: 300px;
    }

我在您的小提琴链接中尝试过,工作正常。

add

       ui-datepicker{
          margin-top: 0px;
          }

我已将此代码添加到您的小提琴中并对其进行了测试。 希望这会有所帮助。已更新您的小提琴

jquery-ui-(version) 中的以下代码行将对象顶部位置设置为零,因此显示错误。注释代码行,您将获得所需的内容。我花了很多天找到比这更好的解决方案。

偏移量 = $.datepicker._checkOffset( inst, offset, isFixed );