【问题标题】:Datetimepicker: Cannot select minutes less than current minute although hour is selected to higher than current hourDatetimepicker:尽管小时被选择为高于当前小时,但无法选择小于当前分钟的分钟
【发布时间】:2017-05-09 03:32:29
【问题描述】:

当我设置 minDate 为“2017/05/09 10:16:00”时,如果我使用箭头将小时设置为更高的分钟小时(例如:11h),我可以设置分钟小于分钟分钟(例如:10m )。但是,如果我使用从网格表中选择来设置小时,我无法选择小于 min 分钟的分钟。有人有这个问题的解决方案吗?请帮助我,对不起我的英语不好。

我的日期时间选择器设置:

    $(".datepicker").datetimepicker({
    useCurrent: false,
    format: "YYYY/MM/DD HH:mm ZZ",
    locale: "ja",
    sideBySide: true,
    toolbarPlacement: "bottom",
    showClose: true,
    widgetPositioning:{
      horizontal: "auto",
      vertical: "top"
    },
    icons: {
      close: "btn-info date-time-close-text"
    }
  });

观看次数:

<div class="time-picker-wrapper">
  <div class="form-group">
    <%= f.text_field :public_time, class: "form-control datepicker time-public",
      placeholder: t(".public_time"), readonly: notification.public_time.nil? && is_edit_page %>
    <%= f.text_field :created_at, class: "datepicker hidden" %>
  </div>
  <button type="button" class="icon-time-picker-wrapper">
    <i class="mp-icon-time-picker"></i>
  </button>
</div>

【问题讨论】:

  • 您在其中使用了很多选项。我使用 datetimepicker 启动了一个应用程序,它没有您遇到的问题。我建议从最基本的设置开始并开始添加选项,直到问题开始,然后至少您知道是哪个选项导致它。
  • 我试试,谢谢你的建议!
  • 我想我也看到了一个问题。您有两个使用相同 JavaScript 函数的 datetimepicker 字段。尝试给它们不同的#id 并创建两个 JavaScript 函数。每人一份。他们可能会相互影响,给您带来意想不到的结果。
  • 我已经删除了第二个 text_field 但这个问题仍然存在。而且我也删除了所有选项,但这个问题仍然发生在默认设置中。我使用这个 datetimepicker 引导程序:github.com/Eonasdan/bootstrap-datetimepicker

标签: javascript jquery ruby-on-rails datetime datetimepicker


【解决方案1】:

这是一个对我有用的基本设置,没有您提到的问题。正如我在评论中所说,这有两个时间/日期字段 - 开始和结束。结束的 minDate 是开始日期,开始的 max date 是结束日期。看看这是否适合你。我将留下我的字段名称,以便您可以更改它们。

JavaScript 文件:

$(document).on('turbolinks:load', function() {
  $('#event_start').datetimepicker({
    format: 'YYYY-MM-DD hh:mm a'
  });
  $('#event_end').datetimepicker({
    useCurrent: false, 
    format: 'YYYY-MM-DD hh:mm a'
  });
  $('#event_start').on("dp.change", function (e) {
    $('#event_end').data("DateTimePicker").minDate(e.date);
  });
  $("#event_end").on("dp.change", function (e) {
    $('#event_start').data("DateTimePicker").maxDate(e.date);
  });
});

表单域

<div class="form-group">
  <%= f.label :start, 'Start Date-Time', class: 'control-label' %>
  <div class='input-group date' id='event_start'>
    <%= f.text_field :start, class: "form-control" %>
    <span class="input-group-addon">
      <span class="glyphicon glyphicon-calendar"></span>
    </span>
  </div>
</div>
<div class='form-group'>
  <%= f.label :end, 'End Time (Optional)', class: 'control-label' %>
  <%= f.text_field :end, class: "form-control" %>
</div> 

【讨论】:

  • 我已经删除了第二个 text_field 但这个问题仍然存在。
  • 我使用了相同的 gem,所以 gem 可以工作。也许从一个非常基本的设置开始。我会将答案更改为对我有用的非常基本的答案。您可以从它开始,看看它是否有效。
  • 它仍然发生,您是否在 datetimepicker 中设置了 minDate?我认为这是一个 Datetimepicker 错误。
  • 我不知道我刚刚检查过,如果我理解正确,我没有收到您提到的问题。在我的应用程序中,我有开始日期/时间和结束日期/时间的字段,我将结束日期/时间设置为开始的 minDate。我可以提前一小时但回到分钟。我将再次更改我的答案以显示这一点。
  • 你可以在这里查看我的问题:youtube.com/watch?v=RRFSg3Fc_xA&feature=youtu.be
【解决方案2】:

我辛苦了一整天,终于找到了解决问题的办法

$(document).ready(function(){
  var default_time = null;

  $(".datepicker").datetimepicker({
    useCurrent: false,
    format: "YYYY/MM/DD HH:mm ZZ",
    locale: "ja",
    sideBySide: true,
    toolbarPlacement: "bottom",
    showClose: true,
    widgetPositioning:{
      horizontal: "auto",
      vertical: "top"
    },
    icons: {
      close: "btn-info date-time-close-text"
    }
  }).on("dp.show", function(){
    default_time = moment();
  });

  $(".datepicker").on("dp.change", function(){
    var time_set = $(".datepicker").val();
    var date_time_set = new Date(time_set);
    if (date_time_set.getHours() > default_time.hours()){
      $("td.minute.disabled").removeClass("disabled");
    }
    else if (date_time_set.getDate() > default_time.date()){
      $("td.minute.disabled").removeClass("disabled");
      $("td.hour.disabled").removeClass("disabled");
    }
    else if (date_time_set.getDate() == default_time.date()){
      $(".datepicker").data("DateTimePicker").minDate(moment());
    }
  });

我希望这个答案可以帮助某人,如果您对我的代码有任何反馈和评论,请告诉我。谢谢!

【讨论】:

  • 酷,很高兴你把它修好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 2014-01-16
  • 2020-04-16
  • 1970-01-01
相关资源
最近更新 更多