0
所以我想通過使用歐洲格式來驗證我的日期輸入,以便它可以很容易地插入到我的數據庫中。我得到一個錯誤消息彈出試圖告訴我使用所需的格式,但改變正則表達式約10億次後,我仍然無法讓它工作。Javascript日期驗證不起作用
下面是我的JS腳本,當我點擊插入按鈕時被調用。
function checkForm(form)
{
// regular expression to match required date format
re = /^(\d{4})-(\d{1,2})-(\d{1,2})/>
if(form.startdate.value != '') {
if(regs = form.startdate.value.match(re)) {
// year value between 1902 and 2017
if(regs[1] < 1902 || regs[1] > (new Date()).getFullYear()) {
alert("Invalid value for year: " + regs[1] + " - must be between 1902 and " + (new Date()).getFullYear());
form.startdate.focus();
return false;
}
// month value between 1 and 12
if(regs[2] < 1 || regs[2] > 12) {
alert("Invalid value for month: " + regs[2]);
form.startdate.focus();
return false;
}
// day value between 1 and 31
if(regs[3] < 1 || regs[3] > 31) {
alert("Invalid value for day: " + regs[3]);
form.startdate.focus();
return false;
}
} else {
alert("Invalid date format: " + form.startdate.value);
form.startdate.focus();
return false;
}
}
}
</script>
這就是調用插入php文件(它處理事物的sql方面),並應該調用上述JS函數。我不確定是否這個錯誤是因爲我也在同一個提交按鈕中插入了一個int數量和數據。
<form action="insertCarb.php" onsubmit="return checkForm(this)" method="post">
Carb Amount: <input type="text" name="CarbAmount" required/><br>
Date: <input type="text" name="Date" required pattern="/^(\d{4})-(\d{1,2})-(\d{1,2})/" placeholder="yyyy/mm/dd"/><br>
<input type="submit">
</form>
什麼錯誤信息你好嗎?我們能否看到一些有效和無效的測試用例日期? – sudo
這應該是有效=「2017-05-31」。 這不應該有效=「31-05-2017」 消息是「請匹配請求的格式」(這是一個信息彈出) –
而這個2017-5-1呢? – sudo