【问题标题】:How to validate if the input is a valid date in javascript [duplicate]如何验证输入是否是javascript中的有效日期[重复]
【发布时间】:2017-12-27 03:06:22
【问题描述】:

我想验证输入到函数的日期是否为有效日期。 我有以下 HTML 标记

<div class="input-group">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i> Check in</span>
                        <input id="checkinner" type="date" onchange="datechange(this)" class="form-control" data-inputmask="'alias': 'dd/mm/yyyy'" placeholder="Enter checkin date of birth">
                    </div>

以下是我在javascript中的函数

function datechange(element) {


        if (element.value.IsValidDate())
        {
            //code 
        }

    }

感谢您的爱和帮助!

【问题讨论】:

标签: javascript html


【解决方案1】:

试试这个:

    function datechange(element) {
        var date = Date.parse(element.value.toString());
        if (isNaN(date))
            alert('This is not a date object');
        else
            alert('This is a date object');
    }

【讨论】:

  • 根据developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…,“不建议使用Date.parse,因为直到ES5,字符串的解析完全取决于实现。不同主机解析日期字符串的方式仍有很多差异,因此日期字符串应该手动解析(如果要适应许多不同的格式,库可以提供帮助)。"
【解决方案2】:

试试这个,

function datechange(element) {
    function isValidDate(s) {
        var regex=new RegExp("([0-9]{4}[-](0[1-9]|1[0-2])[-]([0-2]{1}[0-9]{1}|3[0-1]{1})|([0-2]{1}[0-9]{1}|3[0-1]{1})[-](0[1-9]|1[0-2])[-][0-9]{4})");
        return regex.test(s);
    }
[document.getElementById("checkinner").value].forEach(function(s) {
    if(isValidDate(s)){
        console.log(s + ' : ' + isValidDate(s))
    } else {
        console.log('not valid')
    }
});
}
<div class="input-group">
    <span class="input-group-addon">
        <i class="fa fa-calendar"></i> Check in
    </span>
    <input id="checkinner" type="date" onchange="datechange(this)" class="form-control" data-inputmask="'alias': 'dd/mm/yyyy'" placeholder="Enter checkin date of birth">
</div>

【讨论】:

  • dd/mm/yyyydd-mm-yyyy 都是有效的日期格式。用/ 分割日期字符串并不是这个问题的完整答案。
  • 我不知道为什么,但是如果我在这里运行这段代码 sn-p,它说即使有有效日期也是无效的,我的网站上也会发生同样的情况,但是如果我在 jsFiddle 中运行它,它说它是有效的
  • forEach 函数返回 aaaa-mm-dd,用 jsFiddle 测试它
猜你喜欢
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多