jquery - Bootstrap Datetimepicker 页面上有不止一组链接的选择器

标签 jquery twitter-bootstrap bootstrap-datetimepicker eonasdan-datetimepicker

我正在使用 Eonasdan Bootstrap Datetimepicker https://eonasdan.github.io/bootstrap-datetimepicker/#linked-pickers并正在尝试设置链接选择器。

如果页面上有一对选择器,我可以让它根据需要工作,但如果我有不止一对,则不能 - 我正在使用类来定位选择器,所以我认为我的问题是如何处理dp.change 被触发。

代码类似于:

<form>
   <div class="container">
      <div class="row">
          <div class="col-md-6">
            <input type="text" name="start" class="dp">
          </div>
          <div class="col-md-6">
            <input type="text" name="end" class="dp2">
          </div>
      </div>

   </div>

   <div class="container">
      <div class="row">
          <div class="col-md-6">
            <input type="text" name="start" class="dp">
          </div>
          <div class="col-md-6">
            <input type="text" name="end" class="dp2">
          </div>
      </div>

   </div>   
</form>

JS:

    $('.dp').datetimepicker({
        showTodayButton: true,
        showClose: true,
        toolbarPlacement: "bottom",
        format: "DD/MM/YYYY",
        widgetPositioning: {
            vertical: 'bottom',
            horizontal: 'left'
        }
    }).on('dp.change',function(e){
        $('.dp2').data("DateTimePicker").minDate(e.date);
    });

    $('.dp2').datetimepicker({
        showTodayButton: true,
        showClose: true,
        toolbarPlacement: "bottom",
        useCurrent: false,
        format: "DD/MM/YYYY",
        widgetPositioning: {
            vertical: 'bottom',
            horizontal: 'left'
        }
    }).on('dp.change',function(e){
        $('.dp').data("DateTimePicker").maxDate(e.date);
    });

选择器第一次出现在页面上时,它们会按预期工作 - 设置日期 1,然后日期 2 的选择器具有日期 1 值的最小日期,并且无法选择更早的日期。

选择器第二次出现时,它没有正确链接 - 选择器仍然可以工作等,但它们没有链接。

由于使用此系统的动态特性,我无法使用 ID 来定位拾取器,因为我可能有 1 对或 20 对。

有没有办法让第二个及后续选择器正确链接?

https://jsfiddle.net/e9wrfg6q/1/

最佳答案

您需要选择兄弟关系最接近的'dp''dp2'。 e.i:具有相同的祖 parent ,在本例中是'row'。目前,第一个 'dp''dp2' 将始终被选中。

以下是您可以采取的方法:

而不是:

$('.dp2').data("DateTimePicker").minDate(e.date);

你应该有类似的东西:

$(this).parents('.row')
       .find('.dp2')
       .data("DateTimePicker")
       .minDate(e.date);

这样您就只能定位与“dp”相关的“dp2”,反之亦然。 完整的 js 代码可能类似于:

$('.dp').datetimepicker({
        showTodayButton: true,
        showClose: true,
        toolbarPlacement: "bottom",
        format: "DD/MM/YYYY",
        widgetPositioning: {
            vertical: 'bottom',
            horizontal: 'left'
        }
    }).on('dp.change',function(e){

        $(this).parents('.row')
           .find('.dp2')
           .data("DateTimePicker")
           .minDate(e.date);
    });

    $('.dp2').datetimepicker({
        showTodayButton: true,
        showClose: true,
        toolbarPlacement: "bottom",
        useCurrent: false,
        format: "DD/MM/YYYY",
        widgetPositioning: {
            vertical: 'bottom',
            horizontal: 'left'
        }
    }).on('dp.change',function(e){
        $(this).parents('.row')
               .find('.dp')
               .data("DateTimePicker")
              .maxDate(e.date);
    });

关于jquery - Bootstrap Datetimepicker 页面上有不止一组链接的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43835826/

相关文章:

javascript - 使用 jQuery 在 div 上设置背景颜色?

javascript - jQuery 从准备好的 html 表中动态选择数据

php - 在 PHP 生成后使用 CSS 在主要类别旁边显示子类别

html - Bootstrap,全屏网站 : scrollbar on a div

django - 无响应 django-bootstrap3-datetimepicker (不显示日历)

jquery - 服务器端处理后如何将样式放在数据列表中?

javascript - 使用 jquery 时未检测到全局变量但没有错误

jquery - 按钮将文本放在类的右上角

Django:表单小部件不接受 bootstrapdatetimepicker 提供的日期格式

jquery - Angular 2+ 中的 Bootstrap 3 Datepicker(带或不带 jquery)