在javascript中验证日期范围

时间:2014-02-05 11:54:20

标签: 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>

3 个答案:

答案 0 :(得分:1)

您无法像这样比较验证日期。

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)

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

答案 1 :(得分: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 )方法,接受the following formats

使用HTML5 @ type = date inputs

现代浏览器的另一种选择是使用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;

答案 2 :(得分:0)

试试这个

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

}