【问题标题】:Can I use a javascript variable to set yearRange on jQuery Datepicker?我可以使用 javascript 变量在 jQuery Datepicker 上设置 yearRange 吗?
【发布时间】:2021-02-23 17:44:47
【问题描述】:

我需要从两个javascript变量中设置yearRange,但是这些变量只有在用户从页面上的多个按钮中选择一个之后才设置,每个按钮都将变量设置为特定年份,所以当用户加载页面时变量不会已经设置。我不知道我想要的是否可能,因为我不确定变量的值是否会更新。我认为代码应该类似于:

var startDate;
var endDate;

$(".pickdate").datepicker({
 showOn: 'focus',
 yearRange: startDate+':'+endDate,
 changeMonth: true,
});

变量的值是从另一个 .js 文件中获取的。

【问题讨论】:

    标签: javascript jquery datepicker


    【解决方案1】:

    是的,如果您的第二个 js 在您在此处提到的代码之前加载到全局范围内,则可以。


    [UPDATE] 片段示例:正如您在此示例中看到的,您不能选择 2021 年之后或 2018 年之前的日期!这就是yearRange 选项的目的。它应该为日历定义设置限制。

    console.log(dates.enddate);
    $(".pickdate").datepicker({
     showOn: 'focus',
     yearRange: dates.startDate+':'+dates.enddate,
     changeMonth: true,
    });
    
    //If already contactenated, We can write:
    //yearRange: range,
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <!doctype html>
    
    <html lang="en">
    <head>
      <meta charset="utf-8">
    
      <title>Datepicker</title>
    
      <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.0/themes/smoothness/jquery-ui.css">
      <script>var dates={ startDate:"2018",enddate:"2021"};
      //var range = dates.startDate+':'+dates.enddate;
      </script>
    
    </head>
    
    <body>
      <div class="pickdate"></div>
    </body>
    </html>

    例子:

        //settings.js
    var dates={ startDate:"2018",enddate:"2021"}
    

    所以你只需在脚本之前加载它,如下所示:

        <script src="settings.js"></script> 
        //Your code comes after
    
    $(".pickdate").datepicker({
     showOn: 'focus',
     yearRange: dates.startDate+':'+dates.endDate,
     changeMonth: true,
    });
    

    有关相对默认值等其他详细信息,您可以遵循Datepicker Widget 的指南

    【讨论】:

    • 看起来我不能使用除真/假或字符串以外的东西作为 jQuery 的参数。每当我尝试在 yearRange 上添加变量时,日期选择器就无法正常工作。我尝试使用 getter/setter 方法,但我仍然需要手动输入年份(“2018:2021”而不是 startdate+“:”+endDate)。我应该问另一个问题还是让一些简单的事情变得困难?
    • 对不起,我刚刚注意到您的评论!我用更多的解释和一个有效的 sn-p 更新了我的答案。
    • 谢谢,它就像一个魅力!我意识到我做错了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多