【问题标题】:Object property doesn't update when user changes mind当用户改变主意时对象属性不会更新
【发布时间】:2021-09-27 22:38:40
【问题描述】:

这个想法是,一旦从选择器中选择了一个特定的省份,日历随后只显示 flatpickr 日历中的可用日期。这行得通。

但是,当用户改变主意并选择另一个省份时,该省份的可用日期不会更新。 Console.log(数据)显示正在更新的日期,只是没有反映在日历中。

所以我想具体的问题是;如何重置启用属性。

来源

$(document).ready(function(){
    $('select[name="provincie"]').on('change',function(){
      var provincie_id = $(this).val();
      if (provincie_id){
        $.ajax({
            url: 'provincie/datum/'+provincie_id,
            type: 'GET',
            dataType: 'json',
            success: function (data){
                  var config = {
                    inline: false,
                    altInput: true,
                    dateFormat: "Y-m-d",
                    enable: data,

                  }
                 console.log(data); //shows dates are being updated
                $("input[type=datepick]").flatpickr(config);
            }
        });
      } else {
        $('select[name="times"]').empty();
      }

    });

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

这是第 1 省的数据:

["2021-09-27","2021-09-28","2021-09-29","2021-09-30"]

对于第 2 省:

["2021-10-06","2021-10-08","2021-10-15","2021-10-28"]

【问题讨论】:

    标签: jquery ajax flatpickr


    【解决方案1】:

    .flatpickr(config) 仅用于日期选择器的初始配置。如果要更改现有的日期选择器,则需要使用"set" 方法:

    $("input[type=datepick]").flatpickr("set", "enable", data);
    

    【讨论】:

      【解决方案2】:

      感谢 Barmar 的帮助。下面是修改后的代码。我还添加了一个 clear() 来重置这些值。

      $(document).ready(function(){
        let calendar = flatpickr("input[type=datepick]",{altInput:true, dateFormat:"Y-m-d", enable:["2021-09-30"]});
      
          $('select[name="provincie"]').on('change',function(){
            calendar.clear();
      
            var provincie_id = $(this).val();
      
            if (provincie_id){
      
              $.ajax({
                  url: 'thuisprik-afspraak/datum/'+provincie_id,
                  type: 'GET',
                  dataType: 'json',
                  success: function (data){
      
                      calendar.set("enable", data);
                  }
              });
            } else {
              $('select[name="stad"]').empty();
            }
      
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        • 2016-08-24
        • 2013-12-09
        • 1970-01-01
        • 1970-01-01
        • 2012-03-01
        • 2019-05-18
        相关资源
        最近更新 更多