0

我正在尝试将 Jquery ui datepicker 1.10.3 与 jquery 2.0.2 一起使用。同样使用 requirejs、Zurb 基础作为表单和网格的基本样式。

这听起来像是一个日期选择器问题,但这只是用例,我必须定位其他具有相同问题的随机元素。

我只是想让它在 IE 9,10 和最新的几个 chrome 版本中工作。

我将日期选择器包裹在淘汰赛绑定中。

  ko.bindingHandlers.datepicker = {
            init: function (element, valueAccessor, allBindingsAccessor) {
                //initialize datepicker with some optional options
                var options = allBindingsAccessor().datepickerOptions || {};

                $(element).datepicker(options);
                ....

我有两个大页面。第一页非常大,有数百个输入,一切都很好。

第二页是问题的开始。

它有许多在彼此前面移动的窗格上的大型表格。这个动态页面打破了 jquery ui 的定位。

我试图通过调整beforshow上的边距来手动定位日期选择器,它适用于IE中的多窗格页面,但不适用于chrome。它打破了简单的页面。

我无法修改 jqueryui 中的 _checkOffset 函数。我想根据页面中的位置保留选择器的上方或下方。

在 chrome 和 IE 中找到正确位置的正确方法是什么?

这是我修改后的绑定。在 IE 中的多页面上工作,在 chrome 中中断并且简单页面被打破。

  ko.bindingHandlers.datepicker = {
            init: function (element, valueAccessor, allBindingsAccessor) {
                //initialize datepicker with some optional options
                var options = allBindingsAccessor().datepickerOptions || {};
                debugger;
                options.beforeShow = function (textbox, instance) {
                    //debugger;
                    instance.dpDiv.css({
                        //marginTop: (-textbox.offsetHeight) + 'px',
                        //marginLeft: textbox.offsetWidth + 'px',
                        marginTop: ($(document).scrollTop() || document.body.scrollTop) + 'px'

                    });
                };

                $(element).datepicker(options);
                ....

muilti page ccs的定位是这样的。使用带前缀的 Modernizr。

.perspective {
  position: relative;
  width: 100%;
  height: 100%;
  -webkit-perspective: 1200px;
  -moz-perspective: 1200px;
  perspective: 1200px; }

.pane {
  width: 100%;
  height: 100%;
  position: absolute;
  margin-top: 0px;
  opacity: 0;
  top: 0;
  left: 0;
  visibility: hidden;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  transform-style: preserve-3d; }

.current {
  opacity: 1;
  visibility: visible;
  z-index: 1; }

所以标记是这样的。

<div id="panel_container" class="perspective">

    <div id="Pane3Container" class="pane">
        @Html.Partial("_Form3")
    </div>

    <div id="Pane2Container" class="pane current">
        @Html.Partial("_Form2")
    </div>

    <div id="Pane1Container" class="pane">
        @Html.Partial("_Form1")
    </div>

</div>

谢谢!

4

0 回答 0