根据下拉列表中选择的值设置日期时间选择器格式

Set datetimepicker format depending on the chosen value in dropdown

如果用户在下拉列表中选择 "Days",我希望日期时间选择器仅显示天数,如果用户选择 "Months",则显示月份。

代码在 haml 文件中:

= select_tag 'date_format', options_for_select(["Days", "Months"]), onchange: "myFunction()"

= text_field_tag :from, class: 'datepick'

 :javascript
  function myFunction() {
      var value = document.getElementById("date_format").value;
      if (value == "Days") {
        $(".datepick").datepicker("destroy");
        $(".datepick").datetimepicker({
          format: 'd.m.Y'
        });
      } else if (value == "Months") {
        $(".datepick").datetimepicker("destroy");
        $(".datepick").datepicker({
          format: "mm/yyyy"
        });
      }
  }

目前效果不佳。请帮助我找出我犯了错误的地方。如何覆盖 (".datepick")?

尝试使用 'dateFormat' 和 'formatDate' 选项而不是 'format'

我找到的唯一选择是创建另一个 text_field_tag 和 hide/show 它:

= text_field_tag :from, class: 'datepick'
= text_field_tag :from, class: 'datetimepick'

:javascript
  function myFunction() {
      var value = document.getElementById("date_format").value;
      if (value == "Days") {
        $(".datepick").hide();
        $(".datetimepick").show();
        $(".datetimepick").datetimepicker({
          format: 'd/m/Y'
        });
      } else if (value == "Months") {
        $(".datetimepick").hide();
        $(".datepick").show();
        $(".datepick").datepicker({
          format: "mm/yyyy"
        });
      }
  }