[英]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;
}
}
仅供参考:确保用户输入正确的日期格式。
它能做什么?
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 2014
或2014-02-03
标准的格式。
如果用户可能使用其他输入格式,则可能需要使用诸如Sugar这样的插件来解析更广泛的可能格式。 Sugar添加了一个Date.create( inputString )
方法, 该方法接受以下格式 。
现代浏览器的另一种选择是使用类型为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.