繁体   English   中英

在JavaScript中验证日期范围

[英]Validate date range in javascript

日期格式为“ mm / dd / yyyy”。 它没有给我适当的结果。 仅是有效月份。

    <input type="text" name="durationstart" id="durationstart" value="">
     <input type="text" name="durationend" id="durationend" value="" onclick="return chk_val12()" >

        <script>
        function chk_val12()
        {
            var durationstart   =   document.getElementById('durationstart').value;
            var durationend =   document.getElementById('durationend').value;

            if(durationstart>durationend)   
            {
                alert("Please enter proper duration range");
                return false;
            }   
            else
            {
                return true;
            }

        }
        </script>

您不能像这样比较验证日期。

Text box包含string dataType的值。 所以下面的代码是

if(durationstart>durationend)   // Invalid

而是将其解析为date对象。


更新:

尽管它可以工作,但仍有浏览器兼容性的机会,因此我在此处编写了完整的日期解析

function chk_val12() {
    var durationstart = document.getElementById('durationstart').value;
    var durationend = document.getElementById('durationend').value;
    var st = durationstart.split("/");
    var en = durationend.split("/");
    var startDate = new Date(st[2], (+st[0] - 1), st[1]);                                          
    var endDate = new Date(en[2], (+en[0] - 1), en[1]);
    if (startDate > endDate) {
        alert("Please enter proper duration range");
        return false;
    } else {
        return true;
    }
}

的jsfiddle

仅供参考:确保用户输入正确的日期格式。

它能做什么?

1)拆分您喜欢的dateString

var st = durationstart.split("/");

2)像new Date(YYYY, MM, DD)一样解析它new Date(YYYY, MM, DD)

var startDate = new Date(st[2], (+st[0] - 1), st[1]);

从文本输入中提取和比较格式化的日期字符串

您需要使用Date对象的parse方法将输入字符串转换为毫秒,然后比较2:

var durationstart = Date.parse( document.getElementById('durationstart').value );
var durationend   = Date.parse( document.getElementById('durationend').value   );

这取决于以Date.parse方法期望的方式输入的输入-采用遵循Wed, 3 Feb 20142014-02-03标准的格式。

将任意格式转换为日期对象

如果用户可能使用其他输入格式,则可能需要使用诸如Sugar这样的插件来解析更广泛的可能格式。 Sugar添加了一个Date.create( inputString )方法, 方法接受以下格式

使用HTML5 @ type = date输入

现代浏览器的另一种选择是使用类型为date输入而不是text ,这将允许您直接提取日期值,而不必担心用户输入无法解析的格式。 使用此方法,您可以将HTML更改为:

<input type="date" name="durationstart" id="durationstart" value="">
<input type="date" name="durationend" id="durationend" value="" onclick="return chk_val12()" >

…并使用本机的valueAsDate方法提取值,如下所示:

var durationstart = document.getElementById('durationstart').valueAsDate;
var durationend   = document.getElementById('durationend').valueAsDate;

尝试这个

function dateCheck() {

    fDate = Date.parse(document.getElementById("durationstart").value);
    lDate = Date.parse(document.getElementById("durationend").value);

    if(fDate >lDate )   
        {
            alert("Please enter proper duration range");
            return false;
        }   
        else
        {
            return true;
        }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM