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

时间:2016-01-03 13:44:16

标签: javascript php html5 validation datepicker

我有一个代码,就在去年,它仍然有效。它的作用是禁止用户选择未来的日期。现在是1月份,它似乎没有起作用。我不懂为什么。请帮我解决这个问题。我们将非常感谢您的帮助。

这是输入:

<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>

顺便说一句,我在.php文件中使用此代码。

2 个答案:

答案 0 :(得分:0)

与您使用的一样,原生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

您用来设置日期的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>

这是一个PHP脚本,为了简化您的代码,您可以使用:

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

N.B。浏览器对input[type="date"]的支持各不相同(请参阅http://caniuse.com/#feat=input-datetime)。

您可以通过检查浏览器检查器中的元素来确认使用的最大值是否采用正确支持的RCF3339格式。

答案 1 :(得分:0)

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