【问题标题】:Calling datepicker options function from inside another function从另一个函数内部调用 datepicker 选项函数
【发布时间】:2017-09-08 05:34:08
【问题描述】:

我有以下函数使用 promise 从异步 ajax 调用返回数据:

$("#mySelect").on('change', function() {
      var mySelectValue = $('#mySelect').val();
      var promise = getAvailableDates(mySelectValue);

      promise.done( function(data) { // tested and returning data

        var array = data;

        $('#a_date').datepicker({ // this function not working
           dateFormat: "yy-mm-dd",
           beforeShowDay: function (date) {      
               var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
               return [array.indexOf(string) >= 0 ]
           }
        });

      });
   });

为什么$('#a_date').datepicker() 函数在另一个函数中不起作用?

它不会根据我的 Ajax 调用返回的数据响应我的 dateFormatbeforeShowDay 设置。

如何从返回的承诺中调整 Datepicker 设置?

【问题讨论】:

  • 你是否包含了库?
  • @Valkyriee 你的意思是 CSS 和 JS 吗?是的,日期选择器自己工作,但选项函数在返回的承诺中不起作用。在它之外,它运行良好。
  • 能否请您发布array 变量的值。其余代码似乎是正确的。相同分配的一个简单示例是here

标签: javascript jquery ajax datepicker promise


【解决方案1】:

你必须destroy第一个datetimepicker对象在重新初始化之前创建,通过以下语句:

$("#datepicker").datepicker("destroy");

见下文:

$( function() {
    $( "#datepicker" ).datepicker({
      dateFormat: "yy-mm-dd"
    });
    
    $("#btn1").click(function(){
      $("#datepicker").datepicker("destroy");
      $("#datepicker").datepicker({
        dateFormat: "dd/mm/yy"
      });
      console.log("Format changed, try to select a new date");
    });
  } );
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<p>Date: <input type="text" id="datepicker"></p>
<input type="button" id="btn1" value="Change format">

【讨论】:

  • 谢谢,这就像一个魅力!作为一个 JavaScript 菜鸟,我还不知道这些小事。
猜你喜欢
  • 2018-06-12
  • 2016-01-04
  • 2015-07-04
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 2014-01-01
  • 2017-05-08
  • 1970-01-01
相关资源
最近更新 更多