【问题标题】:Simple datepicker validation简单的日期选择器验证
【发布时间】:2013-09-09 00:54:27
【问题描述】:

有人可以帮我写一个函数来在某人点击一个日期后为 jquery datepicker 显示一行文本(最好是显示一个 css 类)吗?

如果选择的日期介于今天和从今天起 21 天之间,则必须显示通知。

这是我需要帮助的函数,因为我不知道如何编写它。

<script>
     $(function() {
          $( "#delivery_date" ).datepicker({ 
                dateFormat: "dd/mm/yy",
          });
     });
 </script>

<input type="text" id="delivery_date" name="delivery_date" required  />

【问题讨论】:

    标签: jquery html validation datepicker


    【解决方案1】:

    您也许可以使用date.js 对其进行验证,它有一个流畅的 API,可以很容易地表达您的条件。

    示例代码可能是:

    var enteredDate = $("#delivery_date").prop("value");
    var parsed = Date.parse(enteredDate); 
    var start = Date.today();
    var end = Date.today().add(21).days(); 
    if (!parsed.between(start, end)) {
        alert("Date is valid");
    } else {
        alert("Date is not valid");
    }
    

    Test plunker

    【讨论】:

    • 该警报仅在 7 天后更改。此外,我不想要浏览器警报,只想要一行文本。还有一些在选择日期上工作的东西,没有提交按钮。
    • 好吧,我以为你只是想要一个验证输入的函数,当然你可以扩展它;)
    • 我不知道如何扩展,到目前为止,每个人都认为我知道如何编写对我没有帮助的函数。一个星期以来,我一直在这个网站上提问.. 它让我很头疼:(
    • 我可以轻松更改警报以更改显示:css id 的参数吗?
    • 还修复了 plunkr,date.js 与日期格式混淆,现在应该可以正常工作了。
    【解决方案2】:

    你可以在日期选择器中使用onClose

    $(function() {
      $( "#date" ).datepicker({ 
      dateFormat: "dd/mm/yy",
      onClose: function() {
            valid();
        }
      });
    });
    

    jsfiddle - example

    【讨论】:

    • 这不是我想要的,我希望在今天和从今天起 21 天之间选择任何日期时出现一个 CSS div。在那之后,我不想出现任何东西。
    • 看看这个jsfiddle.net/Fa8Xx/726,第 8 行,你可以随意设置样式
    • 1.您的示例不起作用day == today || day == today+22 没有显示 期间 它仅将选择的日期与当前日期和当前日期+22 进行比较,因此至少您必须将其更改为 day&gt;=today &amp;&amp; day&lt;=today+21 但是 2. 什么如果今天是 31 号? - 你会将它与第 53 天进行比较吗?
    【解决方案3】:

    初始化日期选择器时只需使用onSelect 属性

    $( "#delivery_date" ).datepicker({ 
        dateFormat: "dd/mm/yy",
        minDate : new Date(),
        onSelect: function(str) {
    
            var lastDate = new Date(),
                nums = str.split("/"),
                userDate = new Date(nums[2], nums[1]-1, nums[0]), // reverse date
                period = 21;
    
            lastDate.setDate(lastDate.getDate()+period);
    
            if (userDate<lastDate) {
                // notify
                alert("inside 21 days period");
            }
        }
    });
    

    试试FIDDLE

    【讨论】:

      猜你喜欢
      • 2012-09-28
      • 2013-02-02
      • 2022-01-22
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2023-03-25
      相关资源
      最近更新 更多