如何 lock/unlock 根据正确性提交表单?
How to lock/unlock submit form depending its correctness?
我有这样的模态形式
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header login-form-2">
<h5 class="modal-title" id="exampleModalLabel">Okres niestandardowy</h5>
</div>
<div class="modal-body" style="color: black;">
Wybierz okres czasu :
<form method = "post" action="/showbalance/show-custom" id="main" novalidate>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3" >Data początkowa: </label>
<div class="col-sm-7">
<input type="date" class="form-control" id="startDate" name="startDate" value="startDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3" >Data końcowa: </label>
<div class="col-sm-7">
<input type="date" class="form-control" id="endDate" name="endDate" value="endDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
</div>
<div class="modal-footer login-form-2 justify-content-center">
<input type="submit" id="btnSubmit" class="btnSubmit" onclick="checkDate()" value="Wprowadź" />
<input type="button" class="btnAbort" data-bs-dismiss="modal" value="Anuluj" />
</div>
</form>
我在比较 startDate 和 endDate 的 js 脚本中添加了验证。当 endDate 在 startDate 之前时,我想显示有关此的警报消息并锁定提交。当我给出正确的结束日期时,我想更新结束日期变量并显示警报成功并解锁提交。
<script type="text/javascript">
function checkDate() {
var dateForm = document.forms['main'];
var startDate = document.getElementById("startDate").value;
var endDate = document.getElementById("endDate").value;
if (startDate >= endDate) {
document.getElementById("btnSubmit").disabled=true;
alert("End Date cannot occur before the Start Date!");
} else {
document.getElementById("btnSubmit").disabled=false;
alert("Success!");
}
}
</script>
问题是如何让我的函数看到这个更正后的结束日期值?以及如何 lock/unlock 根据表单正确性的情况提交?
提前感谢您的帮助
您的代码几乎可以为所欲为,只是您需要检查其中一个输入值发生变化时的日期。我已经使用您的代码实现了以下代码片段。是您要找的吗?
let startDateInp = document.getElementById('startDate');
let endDateInp = document.getElementById('endDate');
startDateInp.addEventListener('change', checkDate);
endDateInp.addEventListener('change', checkDate);
function checkDate() {
let startDate = startDateInp.valueAsDate;
let endDate = endDateInp.valueAsDate;
if (!endDate || !startDate) {
// do nothing
return;
}
if (startDate >= endDate) {
document.getElementById("btnSubmit").disabled = true;
alert("End Date cannot occur before the Start Date!");
} else {
document.getElementById("btnSubmit").disabled = false;
alert("Success!");
}
}
<div class="modal-body" style="color: black;">
Wybierz okres czasu :
<form method="post" action="/showbalance/show-custom" id="main" novalidate>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3">Data początkowa:(startDate)</label>
<div class="col-sm-7">
<input type="date" class="form-control" id="startDate" name="startDate" value="startDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3">Data końcowa: (endDate)</label>
<div class="col-sm-7">
<input type="date" class="form-control" id="endDate" name="endDate" value="endDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
</div>
<div class="modal-footer login-form-2 justify-content-center">
<input type="submit" id="btnSubmit" class="btnSubmit" onclick="checkDate()" value="Wprowadź (submit)" disabled/>
<input type="button" class="btnAbort" data-bs-dismiss="modal" value="Anuluj" />
</div>
</form>
我有这样的模态形式
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header login-form-2">
<h5 class="modal-title" id="exampleModalLabel">Okres niestandardowy</h5>
</div>
<div class="modal-body" style="color: black;">
Wybierz okres czasu :
<form method = "post" action="/showbalance/show-custom" id="main" novalidate>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3" >Data początkowa: </label>
<div class="col-sm-7">
<input type="date" class="form-control" id="startDate" name="startDate" value="startDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3" >Data końcowa: </label>
<div class="col-sm-7">
<input type="date" class="form-control" id="endDate" name="endDate" value="endDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
</div>
<div class="modal-footer login-form-2 justify-content-center">
<input type="submit" id="btnSubmit" class="btnSubmit" onclick="checkDate()" value="Wprowadź" />
<input type="button" class="btnAbort" data-bs-dismiss="modal" value="Anuluj" />
</div>
</form>
我在比较 startDate 和 endDate 的 js 脚本中添加了验证。当 endDate 在 startDate 之前时,我想显示有关此的警报消息并锁定提交。当我给出正确的结束日期时,我想更新结束日期变量并显示警报成功并解锁提交。
<script type="text/javascript">
function checkDate() {
var dateForm = document.forms['main'];
var startDate = document.getElementById("startDate").value;
var endDate = document.getElementById("endDate").value;
if (startDate >= endDate) {
document.getElementById("btnSubmit").disabled=true;
alert("End Date cannot occur before the Start Date!");
} else {
document.getElementById("btnSubmit").disabled=false;
alert("Success!");
}
}
</script>
问题是如何让我的函数看到这个更正后的结束日期值?以及如何 lock/unlock 根据表单正确性的情况提交?
提前感谢您的帮助
您的代码几乎可以为所欲为,只是您需要检查其中一个输入值发生变化时的日期。我已经使用您的代码实现了以下代码片段。是您要找的吗?
let startDateInp = document.getElementById('startDate');
let endDateInp = document.getElementById('endDate');
startDateInp.addEventListener('change', checkDate);
endDateInp.addEventListener('change', checkDate);
function checkDate() {
let startDate = startDateInp.valueAsDate;
let endDate = endDateInp.valueAsDate;
if (!endDate || !startDate) {
// do nothing
return;
}
if (startDate >= endDate) {
document.getElementById("btnSubmit").disabled = true;
alert("End Date cannot occur before the Start Date!");
} else {
document.getElementById("btnSubmit").disabled = false;
alert("Success!");
}
}
<div class="modal-body" style="color: black;">
Wybierz okres czasu :
<form method="post" action="/showbalance/show-custom" id="main" novalidate>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3">Data początkowa:(startDate)</label>
<div class="col-sm-7">
<input type="date" class="form-control" id="startDate" name="startDate" value="startDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
<div class="form-group row">
<label for="date" class="col-sm-5 control-label mt-3">Data końcowa: (endDate)</label>
<div class="col-sm-7">
<input type="date" class="form-control" id="endDate" name="endDate" value="endDate">
</div>
<div class="col-sm-12 messages"></div>
</div>
</div>
<div class="modal-footer login-form-2 justify-content-center">
<input type="submit" id="btnSubmit" class="btnSubmit" onclick="checkDate()" value="Wprowadź (submit)" disabled/>
<input type="button" class="btnAbort" data-bs-dismiss="modal" value="Anuluj" />
</div>
</form>