Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在选择未来日期时禁用html日期输入类型?_Javascript_Php_Html_Validation_Datepicker - Fatal编程技术网

Javascript 如何在选择未来日期时禁用html日期输入类型?

Javascript 如何在选择未来日期时禁用html日期输入类型?,javascript,php,html,validation,datepicker,Javascript,Php,Html,Validation,Datepicker,我有一个代码,就在去年,它还在工作。它的作用是禁止用户选择未来的日期。现在是一月份,它似乎不起作用了。我不明白为什么。请帮我修一下。谢谢你的帮助 这是输入: <input id="reqDate" class="form-control col-md-7 col-xs-12" name="reqDate" required="required" type="date"> Javascript: <script type="text/javascript">

我有一个代码,就在去年,它还在工作。它的作用是禁止用户选择未来的日期。现在是一月份,它似乎不起作用了。我不明白为什么。请帮我修一下。谢谢你的帮助

这是输入:

<input id="reqDate" class="form-control col-md-7 col-xs-12" name="reqDate" required="required" type="date">

Javascript:

<script type="text/javascript">
          var input = document.getElementById("reqDate");
          var today = new Date();
          var day = today.getDate();

          // Set month to string to add leading 0
          var mon = new String(today.getMonth()+1); //January is 0!
          var yr = today.getFullYear();

            if(mon.length < 2) { mon = "0" + mon; }

            var date = new String( yr + '-' + mon + '-' + day );

          input.disabled = false; 
          input.setAttribute('max', date);
</script>

var输入=document.getElementById(“reqDate”);
var today=新日期();
var day=today.getDate();
//将月份设置为字符串以添加前导0
var mon=新字符串(today.getMonth()+1)//一月是零!
var yr=today.getFullYear();
如果(mon.length<2){mon=“0”+mon;}
变量日期=新字符串(yr+'-'+mon+'-'+day);
input.disabled=false;
input.setAttribute('max',date);

顺便说一下,我在一个.php文件中使用了这段代码。

与您使用的一样,本机
input[type=“date”]
元素支持最大日期值:

Enter a date before 1980-01-01:
<input type="date" name="bday" max="1979-12-31">
http://www.w3schools.com/tags/att_input_max.asp
输入1980-01-01之前的日期:
http://www.w3schools.com/tags/att_input_max.asp
您用于设置日期的JavaScript不会将日期置零,因此对于1月1日,您将获得日期max=“2016-01-1”。要与JavaScript版本保持一致,请使用以下内容填充日期:

<script>
      var input = document.getElementById("reqDate");
      var today = new Date();
      var day = today.getDate();

      // Set month to string to add leading 0
      var mon = new String(today.getMonth()+1); //January is 0!
      var yr = today.getFullYear();

        if(mon.length < 2) { mon = "0" + mon; }
        if(day.length < 2) { dayn = "0" + day; }

        var date = new String( yr + '-' + mon + '-' + day );

      input.disabled = false; 
      input.setAttribute('max', date);
</script>

var输入=document.getElementById(“reqDate”);
var today=新日期();
var day=today.getDate();
//将月份设置为字符串以添加前导0
var mon=新字符串(today.getMonth()+1)//一月是零!
var yr=today.getFullYear();
如果(mon.length<2){mon=“0”+mon;}
如果(day.length<2){dayn=“0”+天;}
变量日期=新字符串(yr+'-'+mon+'-'+day);
input.disabled=false;
input.setAttribute('max',date);
这是一个PHP脚本,为了简化代码,您可以使用:

<input type="date" name="bday" max="<?=date('Y-m-d')?>">

您是否尝试在输入中使用min属性。在html5中,我们可以以适当的日期格式YYYY-MM-DD指定最小或最大属性


您仍然需要在服务器端验证日期是否在范围内。(1) 因为不是所有的浏览器都支持``并且有些浏览器不支持
max
属性。(2) 因为邪恶的参与者可以提交他们想要的任何值。
OP共享的代码中已经使用/设置了
max
属性。也许你也需要在天之前添加一个零,就像月份一样。您是否检查了在生成的HTML中实际添加到输入字段的值?Replace
var day=today.getDate()带有
var day=新字符串(today.getDate())
然后
如果(day.length<2){day=“0”+day;}
将在当月的某一天工作到零。