我有一个简单的验证日期似乎不起作用。我想确保开始日期不大于结束日期。
function validateDate() {
var d1 = new Date.parse(document.getElementsByName("dt1").value);
var d2 = new Date.parse(document.getElementsByName("dt2").value);
if (d1.getTime() > d2.getTime())
alert("Start date cannot be greater than End date");
}
<label for="dt1">Start Date : </label><input type="date" id="dt1">
<label for="dt2">End Date : </label><input type="date" id="dt2" onfocusout="validateDate()">
我附上了一个小提琴来更好地证明这一点:https://jsfiddle.net/63g99gk8/1/
我是一个完整的新手,我喜欢做任何建议和评论。
答案 0 :(得分:0)
代码中存在一些错误。您可以直接创建日期对象。并且还使用getElementById()来获取值。
function validateDate(e) {
var d1 = new Date(document.getElementById("dt1").value);
var d2 = new Date(document.getElementById("dt2").value)
if (d1.getTime() > d2.getTime())
alert("Start date cannot be greater then End date");
}
&#13;
<label for="dt1">Start Date : </label>
<input type="date" id="dt1">
<label for="dt2">End Date : </label>
<input type="date" id="dt2" onchange="validateDate(event);">
&#13;
答案 1 :(得分:0)
您正在使用getElementsByName
返回NodeList而不仅仅是特定元素。看到您使用id
代替getElementById
。
此外new Date.parse
无效。使用new Date()
代替将日历的值作为参数new Date(value)
传递给它。
有关详细信息,请参阅Date上的文档。
var validateDate = function() {
var d1 = new Date(document.getElementById("dt1").value);
var d2 = new Date(document.getElementById("dt2").value);
if (d1.getTime() > d2.getTime())
alert("Start date cannot be greater then End date");
}
&#13;
<label for="dt1">Start Date : </label><input type="date" id="dt1">
<label for="dt2">End Date : </label><input type="date" id="dt2" onfocusout="validateDate()">
&#13;