JSP JAVASCRIPT表单中的验证日期

mzillmmw  于 2022-12-07  发布在  Java
关注(0)|答案(2)|浏览(175)

我试着做javascript来验证输入的日期是否正确。例如,对于ETA(预计到达时间),日期应该早于ETD(预计出发时间)。
这是表单:

<form>
      <label>ETA</label>
             <input  id="etadate" name="etadate" type="date" />
             <input name="etatime" type="time"/> 
      <label>ETD</label>
             <input  id="etddate" name="etddate" type="date"/>
             <input name="etddime" type="time"/>                                                                                        
   </form>

对于javascript:

function validate1
 {
       var x = document.getElementById("etadate");
       var y = document.getElementById("etddate");

       if (x < y)
       {
          true;
       }
       else
       {
          false;
       }
}

当我试图运行代码时,它没有给予用户任何通知,即eta的日期应该早于etd。我不知道在哪里调整,以便代码正确运行。

42fyovps

42fyovps1#

有几个问题:

var x = document.getElementById("etadate");

将返回一个对input元素的引用,该元素是一个对象。不应使用〈运算符比较对象。您需要:

var x = document.getElementById("etadate").value;

因此 * x * 现在是一个字符串。
在支持输入类型date的地方,浏览器应该成功地将字符串解析为日期,因此您可以执行以下操作:

var x = new Date(document.getElementById("etadate").value);

然而,在一些浏览器中,返回的字符串是ISO 8601格式的字符串,如2016 - 05 - 23,它将被解析为UTC,因此对于GMT以西的浏览器,它将显示为早一天。
还有一些浏览器不支持输入类型的日期,关于这一点,SO有一些问题。
无论如何,您需要:
1.获取每个输入的值
1.检查它们是否生成有效日期
1.如果有,比较日期,例如:
第一个
我已经用 * return false * 阻止了提交,函数和侦听器自然应该根据比较的结果返回true或false。
此外,OP中的函数声明没有参数列表,因此语法无效(已在上文中修复)。

6ojccjat

6ojccjat2#

像这样使用-

function validate1
{
   var x = new Date(document.getElementById("etadate").value);
   var y = new Date(document.getElementById("etddate").value);

   return x<y;
}

相关问题