繁体   English   中英

HTML5日期验证

[英]HTML5 Date Validation

我正在寻找一个移动网站的验证,我有两个输入字段,我希望第一个验证价值不晚于今天的日期,第二个验证它不迟于提前一年第一个值。

例如

  • 第一个值= 26/11/2013
  • 第二个值不能包含晚于26/11/2014的值

这可能吗?

我喜欢moment.js 它使处理日期和时间变得更容易。

首先,让我们确保一天“在明天之前”。 这将取决于明天的定义是什么。

var m = moment("26/11/2013", "MM/DD/YYYY");
// tomorrow this time
var t = moment().add("days", 1);
// tomorrow start of day
var tomorrow = moment([t.year(), t.month(), t.date()]);
if (m.lessThan(tomorrow)) {
   // today!!! (or before)
}

同样,从现在起一年内可以使用相同的方法。 在这种情况下,它可能不够关心时间组件,并且我在另一天徘徊 - 但如果它很重要(例如,寻找当天的开始),请参阅前面的示例。

var m = moment("26/11/2013", "MM/DD/YYYY");
var aYearFromNow = moment().add("years", 1).add("days", 1);
if (m.lessThan(aYearFromNow)) {
   // still less than a year!
}

1)缓存元素。

var d1 = document.getElementById('date1');
var d2 = document.getElementById('date2');

2) d1d2的值是string数据类型。 因此将它们拆分并将其解析为日期格式,如下所示

var t = d1.value.split("-");
var date = new Date(parseInt(t[0], 10) + 1, parseInt(t[1], 10), t[2]);

根据d1的值,这里年份增加1

4)再次将其解析为字符串格式(YYYY-MM-DD)

var maxi = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();    

5)将其设置为d2 max属性值

d2.setAttribute("max", maxi);

最后将以下方法添加到d1 onblur事件中。

function setMaxDate() {
    var d1 = document.getElementById('date1');
    var d2 = document.getElementById('date2');
    var t = d1.value.split("-");
    var date = new Date(parseInt(t[0], 10) + 1, parseInt(t[1], 10), t[2]);
    var maxi = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();    
    d2.setAttribute("max", maxi);
}

的jsfiddle

用javascript更好。 您可以使用HTML5属性type =“date”但请记住它几乎不受支持

您可以使用这样的正则表达式/([0-9]{2})/([0-9]{2})/([0-9]{4})/ ,即两位小数,斜线,两个十进制数字,一个斜线和四个十进制数字,所有内容分别分组(组1 =日,组2 =月,组3 =年)。 您会测试的情况下,本模式,(我建议onchange ,因为你提到移动),并且检查数字是否有效范围(例如天<32个月<13年<currentYear-1)内。

暂无
暂无

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

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