我试图检查抵达是否与休假相同,然后它应该显示一个提示框"请更改到达"。
为什么它不能在JavaScript中运行。
Leaving: <input type='date' id='mydateL' class="icon"></input>
Returning: <input type='date' id='mydateR' class="icon"></input>
<input type="button" value="test" onclick="datetimevalidation()"
<script>
function datetimevalidation() {
var leavedate = new Date(document.getElementById("mydateL").value);
var arrivedate = new Date(document.getElementById("mydateR").value);
if(leavedate == arrivedate) {
alert('Please change arrivedate.');
}
}
</script>
答案 0 :(得分:1)
只需将日期转换为长片即可进行比较。
var leavedate = +new Date(document.getElementById("mydateL").value);
var arrivedate = +new Date(document.getElementById("mydateR").value);
if(leavedate == arrivedate) {
alert('Please change arrivedate.');
}
答案 1 :(得分:0)
您需要在getFullYear()
条件中使用getMonth()
,getDate()
和if
。
Leaving:
<input type='date' id='mydateL' class="icon"></input>Returning:
<input type='date' id='mydateR' class="icon"></input>
<div onclick="datetimevalidation()">Click Me</div>
<script>
function datetimevalidation() {
var leavedate = new Date(document.getElementById("mydateL").value);
var arrivedate = new Date(document.getElementById("mydateR").value);
if (leavedate.getFullYear() == arrivedate.getFullYear() && leavedate.getMonth() == arrivedate.getMonth() && leavedate.getDate() == arrivedate.getDate()) {
document.write('Please change arrivedate.');
}
}
</script>
&#13;
答案 2 :(得分:0)
Leaving: <input type='date' id='mydateL' class="icon"></input>
Returning: <input type='date' id='mydateR' class="icon"></input>
<button onclick="myFunction()">Click me</button>
尝试转换日期对象,比较将起作用:
function myFunction()
{
var leavedate = new Date(document.getElementById("mydateL").value);
leavedate = leavedate+ "";
var arrivedate = new Date(document.getElementById("mydateR").value);
arrivedate = arrivedate+ "";
if(leavedate == arrivedate)
{
alert('Please change arrivedate.');
}
}
答案 3 :(得分:0)
您尚未提供足够的信息来准确回答问题,因此只能提供一般性建议。
所有正在使用的浏览器都不支持输入类型日期,因此只需将用户输入的任何内容转换为日期对象而不首先验证输入,这将不是一个强大的解决方案。
考虑一位英国用户,其日期格式为dd / mm / yyyy,并于2015年11月23日进入。然后使用Date构造函数解析此值。
在Chrome(支持日期输入)中,输入将根据系统设置提供dd / mm / yyyy的提示。输入的值属性返回的值将是2015-11-23的字符串,将由Chrome中的Date构造函数解析为本地日期。
在Firefox v42中,它不支持日期输入,字符串将完全按照用户输入的方式返回。 Firefox将解析23/11/2015,好像它是mm / dd / yyyy并返回11/11/2016的日期。
Safari 9也不支持日期输入,并会尝试将其解析为像Firefox这样的mm / dd / yyyy,但会返回无效日期(因为没有第23个月)。
Omniweb 6就像Safari一样。
所以声明&#34;它不起作用&#34;这并不奇怪。要获得强大的日期输入,您必须:
如果输入了有效字符串,则可以直接比较它们的相等性,不需要将它们转换为Date对象。但是,如果以后需要日期对象,那么在比较日期时如果它们被转换为数字就没有坏处,例如。
if (+date0 == + date1) {
// Dates are equal
}
必须先将日期转换为数字,否则==
会将它们作为对象进行比较,并且没有两个对象永远相等,因此除非 d0 和 d1 引用相同的日期对象(在OP上给出评论,似乎是问题,至少在Chrome中)。