限制HTML5日期输入中的未来日期
我想限制用户只能在HTML日期输入中添加未来日期限制HTML5日期输入中的未来日期,html,Html,我想限制用户只能在HTML日期输入中添加未来日期 我想添加HTML5日历,而不是jQueryUI日期选择器。有人能告诉我如何将输入限制到未来的日期吗?使用max属性,这是元素值的预期上限 <input type="date" max="2014-05-15"/> 参考:您可以使用HTML5输入日期的最小和最大属性 HTML5代码 <input type="date" name="bday" min="2014-05-11" max="2014-05-20"> $(
我想添加HTML5日历,而不是jQueryUI日期选择器。有人能告诉我如何将输入限制到未来的日期吗?使用max属性,这是元素值的预期上限
<input type="date" max="2014-05-15"/>
参考:您可以使用HTML5输入日期的最小和最大属性 HTML5代码
<input type="date" name="bday" min="2014-05-11" max="2014-05-20">
$(function(){
var dtToday = new Date();
var month = dtToday.getMonth() + 1;
var day = dtToday.getDate();
var year = dtToday.getFullYear();
if(month < 10)
month = '0' + month.toString();
if(day < 10)
day = '0' + day.toString();
var maxDate = year + '-' + month + '-' + day;
$('#txtDate').attr('max', maxDate);
});
编辑您需要使用jQuery来实现它 jQuery代码
<input type="date" name="bday" min="2014-05-11" max="2014-05-20">
$(function(){
var dtToday = new Date();
var month = dtToday.getMonth() + 1;
var day = dtToday.getDate();
var year = dtToday.getFullYear();
if(month < 10)
month = '0' + month.toString();
if(day < 10)
day = '0' + day.toString();
var maxDate = year + '-' + month + '-' + day;
$('#txtDate').attr('max', maxDate);
});
$(函数(){
var dtToday=新日期();
var month=dtToday.getMonth()+1;
var day=dtToday.getDate();
var year=dtToday.getFullYear();
如果(月<10)
month='0'+month.toString();
如果(第10天)
day='0'+day.toString();
变量maxDate=年+'-'+月+'-'+日;
$('txtDate').attr('max',maxDate);
});
解释
HTML5输入日期的max属性以两位数格式表示月份和日期
例:5(月)无效,而05(月)有效
例:1(天)无效,而01(天)有效
所以我添加了下面的代码
if(month < 10)
month = '0' + month.toString();
if(day < 10)
day = '0' + day.toString();
if(月<10)
month='0'+month.toString();
如果(第10天)
day='0'+day.toString();
检查我的最新小提琴
参考以@Chirag Vidani的答案为基础,可以用较少的行生成日期,如下所示:
var now = new Date(),
// minimum date the user can choose, in this case now and in the future
minDate = now.toISOString().substring(0,10);
$('#my-date-input').prop('min', minDate);
我已经更新了工作小提琴 HTML&js:
var dateControler = {
currentDate : null
}
$(document).on( "change", "#txtDate",function( event, ui ) {
var now = new Date();
var selectedDate = new Date($(this).val());
if(selectedDate > now) {
$(this).val(dateControler.currentDate)
} else {
dateControler.currentDate = $(this).val();
}
});
其他一些人提出了将最大日期设置为当前日期的问题。建议的答案包括使用JavaScript。但我的解决方案是使用服务器端语言为输入生成max参数。我知道OP没有询问服务器端方法。但是,使用C#Razor作为服务器语言,这个解决方案对我来说非常有效 在服务器上,我写入:
@Html.TextBox("CurrentDate",
Model.CurrentDate.ToString("yyyy-MM-dd"),
new {
@class = "form-control",
@type = "date",
max = DateTime.Now.ToString("yyyy-MM-dd")
})
然后MVC输出这个Html:
<input class="form-control" id="CurrentDate" name="CurrentDate"
type="date" max="2016-11-10" value="2016-11-10">
对于其他服务器语言,该方法将类似地使用服务器的日期生成max参数,如果您的要求是使用客户机的日期,则该方法可能有效,也可能无效。在我的情况下,服务器的日期是需要的,因为它是存储数据的地方。旧问题但解决方案可能会帮助使用JQuery的人:
$(document).ready(function () {
var today = new Date();
var day=today.getDate()>9?today.getDate():"0"+today.getDate(); // format should be "DD" not "D" e.g 09
var month=(today.getMonth()+1)>9?(today.getMonth()+1):"0"+(today.getMonth()+1);
var year=today.getFullYear();
$("#dpFromDate").attr('max', year + "-" + month + "-" + day);
});
日期格式应为YYYY-MM-DD。这是一个PHP解决方案,它获取今天的日期并将其设置为最大日期
<input type="date" name="bday" max="<?php echo date("Y-m-d"); ?>">
@Jack但是如果我们使用max date作为2014-05-15,那么如果用户在5月15日之后输入日期呢?这应该是不允许的@Jack而不是使用特定的日期。我们不能使用像new date()这样的内容,以便日期根据您的电脑中的当前日期进行限制吗?您不能直接使用new date作为参数,但是您可以使用JS注入新日期的值。@Jack。。。谢谢:)@Chirag但是如果我们像这样使用max-date,我们每次都必须更改它,而不是使用new-date()(我们在JQuery中使用它来限制未来的日期)最大限度attribute@Erandi无法获取您的@Chirag..friend here如果您将max date添加为2014-05-20,那么假设用户在2014-06-01填写表单,那么此时我们不能将max date用作neah的此日期,因此如果有一个选项限制用户根据其pc@Chirag中的当前日期输入未来日期,则更好…哇,很好的解释。非常感谢您的帮助:)(Y)这个例子似乎不是“需要使用jQuery来实现它”。这个例子的大部分甚至不使用jQuery。为什么说需要jQuery?这是将日期转换为HTML5格式的最干净的方法。这是最干净的方法,但错误地设置为min
,而不是max
请注意,toISOString生成的日期是UTC日期,这可能与本地日期相差1天,具体取决于代码运行的时间和主机的时区偏移量。@Mortezatorani我的理解是OP需要一个日期输入,其中只能选择未来的日期。任何从现在到未来的日期都是有效的,从现在到过去的日期都不可用。因此使用“min”属性,因为现在是用户可以选择的“min(imum)”日期,没有max。将其设置为“max”将只允许选择过去的日期。如果我误解了最初的问题,请向其他人澄清。@Juank你所做的和解释的正是我的意思。然而,有人编辑了您的答案,并将min
替换为max
,因此,我认为最好恢复编辑。可能与@Html.EditorFor重复