【问题标题】:jquery datepicker position on scroll triggered by button in fixed header由固定标题中的按钮触发的滚动上的jquery datepicker位置
【发布时间】:2015-06-15 20:59:24
【问题描述】:

在搜索了几个小时并深入研究了 jQuery UI 代码之后,我仍然不知道如何纠正我的特殊情况。我正在开发一个应用程序,它使用 PHP 和 datatables.js 在表中显示数据库中的数据。某些列具有可对将要更新数据的员工进行编辑的输入字段。三个输入字段绑定到显示 jQuery 日期选择器的按钮。选择行时,单击需要数据的字段的相应按钮,然后从日期选择器中选择日期,输入字段将填充所选日期。绑定到输入字段的按钮处于固定位置,因此它们向下滚动页面。用户滚动页面后,日期选择器的位置远低于用户视图,具体取决于他们向下滚动的距离。使用 Chrome 的检查器,我看到 datepicker 被附加到文档底部,就在结束 body 标记的上方,这使得可以理解为什么 datepicker 不在视野范围内,但仍然存在于页面上。当用户滚动时,如何使用固定按钮将 jQuery 日期选择器保持在适当位置???

我希望我对我正在尝试做的事情足够清楚,因为这里的信息很可能比需要的更多。如果需要,屏幕截图在这里......

Screenshot of original position and after scroll

有时需要使用同一日期同时更新多行,这就是不将日期选择器绑定到各个输入字段的原因。最终会有数千行,因此需要滚动。

这是 HTML...

<input name="approved-date" type="hidden" id="approved-date" onchange="getApprovedDate()" />
<input name="tobe-paid" type="hidden" id="tobe-paid" onchange="getToBePaid()" />
<input name="paid-date" type="hidden" id="paid-date" onchange="getPaidDate()" />

这是设置日期选择器非常基础的 jQuery...

$("#approved-date").datepicker({
    showOn: 'button',
    dateFormat: 'yy-mm-dd'
});

$("#paid-date").datepicker({
    showOn: 'button',
    dateFormat: 'yy-mm-dd'
});

$("#tobe-paid").datepicker({
    showOn: 'button',
    dateFormat: 'yy-mm-dd'
});

$('#approved-date + button').button({
    text: true,
    label: 'Approved Date'
});    

$('#paid-date + button').button({
    text: true,
    label: 'Paid Date'
});

$('#tobe-paid + button').button({
    text: true,
    label: 'Verified Date'
});  

最后,jQuery 函数将所选日期添加到突出显示的行的输入字段中......

function getApprovedDate() {

if($('tr').hasClass('active') && $('#approved-date').val()) {

    $('tr.active td .approved-input').val($('#approved-date').val());

    if($('tr.active td.confirmed').html() == 1) {

        $('tr.active td .claim-amount').val('$70');

    }else if($('tr.active td.confirmed').html() == 0) {

        $('tr.active td .claim-amount').val('$50');

    }

}else {

    $('tr td .approved-input').val("");

}

}

函数 getPaidDate() {

if($('tr').hasClass('active') && $('#paid-date').val()) {

    $('tr.active td .paid-input').val($('#paid-date').val());

}else {

    $('tr td .paid-input').val("");

}

}

函数 getToBePaid() {

if($('tr').hasClass('active') && $('#tobe-paid').val()) {

    $('tr.active td .tobepaid-input').val($('#tobe-paid').val());

}else {

    $('tr td .tobepaid-input').val("");

}

}

【问题讨论】:

    标签: javascript jquery datepicker


    【解决方案1】:

    在我的头撞在桌子上几次之后,我解决了自己的问题,这很简单。唯一需要做的就是在 jquery-ui.css 中为 .ui-datepicker 类设置顶部位置......

    原始 CSS...

    .ui-datepicker {
       width: 17em;
       padding: .2em .2em 0;
       display: none;
    }
    

    修改后的 CSS...

    .ui-datepicker {
       width: 17em;
       padding: .2em .2em 0;
       display: none;
       top: 70px !important;
    }
    

    对我来说 70px 是正确的位置,所以如果有人遇到这个问题,只需将顶部位置设置为您需要的任何位置,并确保包含 !important 否则它将被覆盖。现在,无论您滚动到页面的哪个位置,日期选择器小部件都会显示按钮。

    【讨论】:

      猜你喜欢
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2015-05-04
      • 2019-08-18
      • 2017-05-31
      • 2013-04-28
      • 2012-12-14
      相关资源
      最近更新 更多