jQuery 简单的日期选择器验证

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18632090/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 22:05:29  来源:igfitidea点击:

Simple datepicker validation

jqueryhtmlvalidationdatepicker

提问by Lee Collings

Can someone help me write a function for showing a line of text (preferably by showing a css class) for a jquery datepicker after someone has clicked a date?

有人可以帮我编写一个函数,用于在某人单击日期后为 jquery 日期选择器显示一行文本(最好通过显示 css 类)?

The notice has to appear IF the date picked falls between TODAY and 21 DAYS FROM TODAY.

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

It's the function I need help with, as I don't know how to write it.

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

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

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

回答by narrowtux

You might be able to validate it using date.js, it has a fluent API which makes it very easy to express your conditions.

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

Example code might be:

示例代码可能是:

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

测试plunker

回答by JTC

U can use onClosein datepicker

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

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

jsfiddle - example

jsfiddle - 示例

回答by vladkras

just use onSelectproperty when you init datepicker

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");
        }
    }
});

try FIDDLE

尝试小提琴