我只有一行简单的代码:
<input type='date' min='1899-01-01' max='2000-01-01'></input>
有没有一种简单的方法可以将最大日期设置为“今天”而不是2000-01-01?或者我必须使用Javascript来执行此操作?
您将需要Javascript来执行此操作:
HTML
<input id="datefield" type='date' min='1899-01-01' max='2000-13-13'></input>
JS
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10){
dd='0'+dd
}
if(mm<10){
mm='0'+mm
}
today = yyyy+'-'+mm+'-'+dd;
document.getElementById("datefield").setAttribute("max", today);
代替Javascript,更短的基于PHP的解决方案可能是:
<input type="date" name="date1" max=
<?php
echo date('Y-m-d');
?>
>
JavaScript只是简单的解决方案
datePickerId.max = new Date().toISOString().split("T")[0];
<input type="date" id="datePickerId" />
将需要Javascript;例如:
$(function(){
$('[type="date"]').prop('max', function(){
return new Date().toJSON().split('T')[0];
});
});
toISOString()
将提供当前的UTC日期。因此,为了获得当前的当地时间,我们必须得到getTimezoneOffset()
并从当前时间中减去它
document.getElementById('dt').max = new Date(new Date().getTime() - new Date().getTimezoneOffset() * 60000).toISOString().split("T")[0];
<input type="date" min='1899-01-01' id="dt" />
是的,不。 HTML 5中有min和max属性,但是
由于IE 10+和Firefox不支持这些输入类型,因此max属性不适用于Internet Explorer 10+或Firefox中的日期和时间。
因此,如果您对该属性的文档感到困惑,但它不起作用,那就是原因。 有关版本,请参阅W3 page。
我发现使用Javascript最简单,其他答案说,因为你可以使用预制模块。此外,许多Javascript日期选择器库具有最小/最大设置,并具有漂亮的日历外观。
它可能很有用:如果你想用Symfony表单来做:
$today = new DateTime('now');
$formBuilder->add('startDate', DateType::class, array(
'widget' => 'single_text',
'data' => new \DateTime(),
'attr' => ['min' => $today->format('Y-m-d')]
));
以前的答案之一的简短但可能不太可读的版本。
<script type="text/javascript">
$(document).ready(DOM_Load);
function DOM_Load (e) {
$("#datefield").on("click", dateOfBirth_Click);
}
function dateOfBirth_Click(e) {
let today = new Date();
$("#datefield").prop("max", `${today.getUTCFullYear()}-${(today.getUTCMonth() + 1).toString().padStart(2, "0")}-${today.getUTCDate().toString().padStart(2, "0")}`);
}
</script>
我也有同样的问题。我通过这种方式构建它。我使用了struts 2框架。
<script type="text/javascript">
$(document).ready(function () {
var year = (new Date).getFullYear();
$( "#effectiveDateId" ).datepicker({dateFormat: "mm/dd/yy", maxDate:
0});
});
</script>
<s:textfield name="effectiveDate" cssClass="input-large"
key="label.warrantRateMappingToPropertyTypeForm.effectiveDate"
id="effectiveDateId" required="true"/>
这对我有用。