【发布时间】:2020-10-19 18:16:16
【问题描述】:
嗯。我的问题是来自浏览器日历(例如默认的 chrome 日历)的 DATE 控件在输入此日历的日期后,后者的类型为 mm / dd / yyyy 但是我在输入后在数据库中找到的数据类型为 yyyy / mm / dd 这是我的html表单的代码:
<form name=formu action="ajouter_semestre.php" method="POST">
<input type="date" placeholder="date debut semestre" value="<?php if (isset($_POST['date_debut_sem'])){echo $_POST['date_debut_sem'];} ?>" maxlength="10" name="date_debut_sem" id="date_debut_sem" required><br>
<input type="date" placeholder="date Fin du semestre" value="<?php if (isset($_POST['date_fin_sem'])){echo $_POST['date_fin_sem'];} ?>" maxlength="10" name="date_fin_sem" id="date_fin_sem" required><br>
</form>
这是我的 js 控制器脚本
<script>
with(document.formu) {
onsubmit = function() {
tabdeb = (date_debut_sem.value.split(/[- //]/));
tabfin = (date_fin_sem.value.split(/[- //]/));
Odeb = new Date(tabdeb[2],tabdeb[1],tabdeb[0]);
Ofin = new Date(tabfin[2],tabfin[1],tabfin[0]);
if(Odeb > Ofin) {
alert('date fin du semestre doit etre superieure a la date du debut')
date_debut_sem.focus(); date_fin_sem.style.backgroundColor='#F00';
return false
};
};
};
</script>
因为它只控制日子 谢谢你读到这里
【问题讨论】:
-
您有几个对
ds_sh的引用,但您发布的代码中不存在该函数,因此您的示例不可运行。请阅读minimal reproducible example。此外,您可以将两个单独的代码块变成一个可运行的 stack-sn-p。 -
好的,我明白了。所以,我更新了我的代码,它只控制天,没有月或年
-
您可以在帖子中编辑正式问题吗?我想我理解你的困境,日期格式不匹配,但为了清楚起见,一个问题真的很有帮助。
-
请参阅MDN regarding with statements,强烈建议不要使用它们。日期解析有缺陷(月份应为 -1),值是 ISO 8601 格式的日期(YYYY-MM-DD),因此可以在不转换为日期的情况下进行词法比较,例如
date_debut_sem.value > date_fin_sem.value就足够了。在块后面加分号只是一个多余的空语句,不要这样做。 -
RobG 我试过了,但是不管用,我的目标是结束和开始日期控制,不管是什么技术,所以我在 jquery 和 jquery-ui 中找到了我的愿望。我会为像我这样的学生分享它
标签: javascript php date