Javascript-如何将html日期限制为今天';谁的日期?

Javascript-如何将html日期限制为今天';谁的日期?,javascript,html,date,Javascript,Html,Date,在我的html页面中有字段。我试图在javascript中创建一个函数,如果选择了比今天大的日期,该函数将在该字段中设置今天的日期。实际上,我想把最长日期限制在今天。这里是代码。我做错了什么 HTML: <div class="entry"> <label for="startDate">Start date:</label> <input id="startDate" name="startDate" type="date" oninp

在我的
html
页面中有
字段。我试图在
javascript
中创建一个函数,如果选择了比今天大的日期,该函数将在该字段中设置今天的日期。实际上,我想把最长日期限制在今天。这里是代码。我做错了什么

HTML:

<div class="entry">
    <label for="startDate">Start date:</label>
    <input id="startDate" name="startDate" type="date" oninput="validDate(startDate)">
</div>
function validDate(date) {
    todayDate = getTodaysDate();
    if (date > todayDate)
        document.searchForm["date"].value = todayDate;
}

function getTodaysDate(){
    date = new Date();
    day = date.getDate();
    month = date.getMonth() + 1;
    year = date.getFullYear();

    if (month < 10) month = "0" + month;
    if (day < 10) day = "0" + day;

    today = year + "-" + month + "-" + day; 

    return today;
}

开始日期:
Javascript:

<div class="entry">
    <label for="startDate">Start date:</label>
    <input id="startDate" name="startDate" type="date" oninput="validDate(startDate)">
</div>
function validDate(date) {
    todayDate = getTodaysDate();
    if (date > todayDate)
        document.searchForm["date"].value = todayDate;
}

function getTodaysDate(){
    date = new Date();
    day = date.getDate();
    month = date.getMonth() + 1;
    year = date.getFullYear();

    if (month < 10) month = "0" + month;
    if (day < 10) day = "0" + day;

    today = year + "-" + month + "-" + day; 

    return today;
}
函数有效期(日期){
todayDate=GetTodayDate();
如果(日期>今天日期)
document.searchForm[“date”]。value=todayDate;
}
函数getTodaysDate(){
日期=新日期();
day=date.getDate();
月=日期。getMonth()+1;
年份=日期。getFullYear();
如果(月<10)月=“0”+月;
如果(天<10)天=“0”+天;
今天=年+“-”+月+“-”+日;
今天回来;
}
您可以设置属性,将其限制为今天的日期:

document.getElementById('startDate').setAttribute('max', getTodaysDate());
请参见

您可以设置属性以将其限制为今天的日期:

document.getElementById('startDate').setAttribute('max', getTodaysDate());

请看

这里有一个最新的小提琴,适合我(至少在Chrome/Windows中):

JavaScript:

function validDate(date, theInput) {
    var date = document.getElementById("startDate").value;
    todayDate = getTodaysDate();
    if (date > todayDate)
        theInput.value = todayDate;
}

function getTodaysDate(){
    date = new Date();
    day = date.getDate();
    month = date.getMonth() + 1;
    year = date.getFullYear();

    if (month < 10) month = "0" + month;
    if (day < 10) day = "0" + day;

    today = year + "-" + month + "-" + day; 

    return today;
}
函数有效期(日期、输入){
var date=document.getElementById(“startDate”).value;
todayDate=GetTodayDate();
如果(日期>今天日期)
Input.value=todayDate;
}
函数getTodaysDate(){
日期=新日期();
day=date.getDate();
月=日期。getMonth()+1;
年份=日期。getFullYear();
如果(月<10)月=“0”+月;
如果(天<10)天=“0”+天;
今天=年+“-”+月+“-”+日;
今天回来;
}
HTML:


开始日期:

这里有一个最新的小提琴,适合我(至少在Chrome/Windows中):

JavaScript:

function validDate(date, theInput) {
    var date = document.getElementById("startDate").value;
    todayDate = getTodaysDate();
    if (date > todayDate)
        theInput.value = todayDate;
}

function getTodaysDate(){
    date = new Date();
    day = date.getDate();
    month = date.getMonth() + 1;
    year = date.getFullYear();

    if (month < 10) month = "0" + month;
    if (day < 10) day = "0" + day;

    today = year + "-" + month + "-" + day; 

    return today;
}
函数有效期(日期、输入){
var date=document.getElementById(“startDate”).value;
todayDate=GetTodayDate();
如果(日期>今天日期)
Input.value=todayDate;
}
函数getTodaysDate(){
日期=新日期();
day=date.getDate();
月=日期。getMonth()+1;
年份=日期。getFullYear();
如果(月<10)月=“0”+月;
如果(天<10)天=“0”+天;
今天=年+“-”+月+“-”+日;
今天回来;
}
HTML:


开始日期:

查看。不确定代码是否正确,但至少不会更改无效值。这需要
onxxx=“return func()”
。查看。不确定代码是否正确,但至少
onxxx=“func()”
不会更改无效值。这需要
onxxx=“return func()”
。只有safari不支持它。这里只看到safari不支持它。看这里,它确实有效,是的。但在我看来,
validDate(日期)
函数有点奇怪。您没有使用任何参数调用函数。我想对表单上的多个日期字段使用此函数,而不仅仅是
startDate
;那是我的错误。我已经更新了我的答案(和小提琴),使代码更便于移植;你现在应该能够在不同的日期输入上使用它。它确实有效,是的。但在我看来,
validDate(日期)
函数有点奇怪。您没有使用任何参数调用函数。我想对表单上的多个日期字段使用此函数,而不仅仅是
startDate
;那是我的错误。我已经更新了我的答案(和小提琴),使代码更便于移植;您现在应该能够在不同的日期输入上使用它。