强制jQuery UI Datepicker显示在输入字段下方

时间:2016-07-15 14:59:59

标签: javascript jquery html jquery-ui datepicker

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

  1. 我试图强制jQuery UI datepicker显示在输入字段下方。
  2. 当我在输入字段中单击时,我希望该字段也滚动到页面顶部。我想我有这个工作。
  3. 这是我的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/

    这是我想要避免的:

    Datepicker displays above the input field

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

4 个答案:

答案 0 :(得分:8)

您可以通过设置日期选择器pop的css来实现目标。

使用下面的代码设置CSS,使用setTimeout是为了避免重写CSS。

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

关于有关beforeShow事件检查的信息,请点击此处。

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/

答案 1 :(得分:1)

一个简单的解决方法是使用CSS为CALENDER Box调整前端。

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

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

我在你的小提琴链接中尝试过,工作得很好。

答案 2 :(得分:1)

添加

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

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

答案 3 :(得分:0)

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

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