![](/img/trans.png)
[英]How to validate date on the client side in jsp form without javascript?
[英]JAVASCRIPT validate date in the form
我試圖用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。 我不知道在哪里調整,所以代碼運行正常。
像這樣使用 -
function validate1
{
var x = new Date(document.getElementById("etadate").value);
var y = new Date(document.getElementById("etddate").value);
return x<y;
}
有幾個問題:
var x = document.getElementById("etadate");
將返回對input元素的引用,該元素是一個對象。 不應使用<運算符比較對象。 你需要:
var x = document.getElementById("etadate").value;
所以x現在是一個字符串。
在支持輸入類型日期的情況下,瀏覽器應該成功地將字符串解析為日期,因此您可以執行以下操作:
var x = new Date(document.getElementById("etadate").value);
但是,在某些瀏覽器中,返回的字符串是ISO 8601格式的字符串,如2016-05-23,它將被解析為UTC,因此對於GMT以西的人來說,它似乎是提前一天。 你需要處理這個問題。
然后有些瀏覽器不支持輸入類型日期,有關於此的問題。
無論如何,你需要:
function validate1 (form) { var x = new Date(form.etadate.value); var y = new Date(form.etddate.value); if (isNaN(+x) || isNaN(+y)) { alert("One of the dates is invalid"); return false; } if (x < y) { alert('ETA is before ETD'); } else { alert('ETD is before ETA'); } }
<form onsubmit="validate1(this); return false;"> <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="etdtime" type="time"> <button>submit</button> </form>
我已經使用return false阻止了提交,自然函數和監聽器應該返回true或false,具體取決於比較的結果。
此外,OP中的函數聲明沒有參數列表,因此語法無效(在上面已修復)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.