【问题标题】:How to keep jquery ui datepicker in place (stick to the input control) while scrolling?滚动时如何保持jquery ui datepicker(坚持输入控件)?
【发布时间】:2012-05-25 05:09:23
【问题描述】:

在阅读了大量有关该主题的内容后,我仍然对如何解决问题一无所知。为了澄清问题,我希望日历与关联的输入控件一起滚动,而不是固定在任何屏幕位置。 这是没有滚动的图像:(这也是我想在滚动上保留的)

这是滚动时的图像:(这不是我想要的)

任何提示将不胜感激。 更新: 这是一个密切描述问题的link,我希望日历在滚动时粘在控件上。

【问题讨论】:

  • 您的设置可能有问题,因为演示中的jqueryui.com/demos/datepicker 日历在滚动时会粘在输入字段上。你能显示一些代码吗?
  • 似乎有 position:fixed 而不是 :absolute... 任何链接?
  • 感谢您的回复,我无法提供链接,因为我正在处理的网站不公开,抱歉。 @Joy 我注意到我自己,这让我更加困惑!?包含 datepicker 的 div 是绝对位置。
  • 也许设置一个带有基本标记的jsfiddle.net
  • 这里是基本标记的链接:jsbin.com/ubahe5/109/edit#javascript,html,live

标签: jquery css jquery-ui uidatepicker


【解决方案1】:

我不确定你的是否是可滚动的 div,但这里发生的问题是 jQuery UI 日期选择器在可滚动的 div 内不会随 HTML 内容移动。

这是一个演示 http://jsfiddle.net/joycse06/m6A5q/embedded/result/ 演示问题的小提琴。单击输入并尝试滚动该 div。

这是因为 jQuery UI 将日历 UI 创建为位置 absolute relativedocumentwindow 而不是容器可滚动 div。因此,当可滚动 div 滚动时,主窗口的滚动上下文不会更改,因此 datepicker 日历不会跟随该 div 中的其他 html 元素。

因此,解决方案可以是在滚动该 div 时隐藏日历,这很有意义,如果输入不可见,您可以隐藏 datepicker 日历。所以更新后的代码将是

var datePicker = $('#datepicker').datepicker();

$(".demo").scroll(function() {
  datePicker.datepicker('hide');
  $('#datepicker').blur();
});

$(window).resize(function() {
  datePicker.datepicker('hide');
  $('#datepicker').blur();
});

当容器 div 或窗口滚动时,它将隐藏日期选择器。这是一个工作小提琴http://jsfiddle.net/joycse06/m6A5q/2/

我正在使用$('#datepicker').blur();,因为当用户滚动.demo 时,日历会隐藏,但input 仍然是焦点,所以当他向后滚动时,他可能会感到困惑。所以当我模糊它时,他将不得不再次点击input,然后日期选择器就会出现。

【讨论】:

  • 谢谢乔伊,这是我最初的解决方案,但负责的开发人员坚持认为日历应该坚持它的控制。 +1 替代解决方案
  • 很好的解决方案解决了我的问题..谢谢:)
  • 这不是实际的解决方案,因为日期选择器仅在滚动条滚动时隐藏(即)当我们通过鼠标滚动而不单击任何内容时它不会隐藏
猜你喜欢
  • 2017-04-25
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2017-06-21
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多