【问题标题】:Issue disabling years below 18 years in bootstrap datepicker在引导程序 datepicker 中禁用 18 岁以下的年份
【发布时间】:2019-02-01 07:15:51
【问题描述】:

使用引导程序日期选择器向用户显示日期的表单。我有一个出生日期字段,试图禁用从当前日期起 18 岁以下的任何用户的年份。例如,由于我们在 2019 年,日期选择器应该只显示低于 2001 年的年份,例如 2001 、 2000 、 1999 、 1998 、 1997 等

这工作正常(年),但我在禁用月份和特定日期时遇到问题,例如,由于我们在 01/02/2019 ,日期选择器应该禁用 2001 年 2 月 1 日之后的任何日期

出生日期

//dob
<div class="form-line registar love">
      <input type="text" placeholder="Date of Birth *" class="form-input" name="dob" id="dob" value="#" title="You should be over 18 years old" required>

      <label class="error error-tip" for="dob" id="dobErr" style="display: none; color:red; font-size: 11px;">You should be over 18 years old</label>
 </div>
//end dob

Javascript 逻辑

var maxBirthdayDate = new Date();
maxBirthdayDate.setFullYear( maxBirthdayDate.getFullYear() - 18 );
maxBirthdayDate.setMonth(11,31);
$( function() {
  $( "#dob" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'yy-mm-dd',
    maxDate: maxBirthdayDate,
    yearRange: '1900:'+maxBirthdayDate.getFullYear(),
  });
});

【问题讨论】:

    标签: javascript date datepicker


    【解决方案1】:

    对于 bootstrap-datepicker (^1.9.0) 我已经解决了。

    $('#dob').datepicker({ endDate: '-18Y' });
    

    【讨论】:

    • 太棒了亲爱的,不知道为什么,但我错过了这个简单的东西,而不是几年,我使用 +0d,谢谢 :)
    【解决方案2】:

    您可以使用minDatemaxDate 以非常简单的方式进行验证,以防止用户在 18 岁之前选择 DOB。

    $("#dob").datepicker( { minDate: '-30Y',dateFormat: 'dd/mm/yy', maxDate: '-18Y' });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
    <script src="https://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
    
    
    <p>Date: <input type="text" id="dob" /></p>

    【讨论】:

    • ,,您的建议不起作用,我希望年、月和日期低于今年 18 年,...请再次回答我的问题 ..
    • @Martin $("#dob").datepicker( { minDate: '-30Y',dateFormat: 'dd/mm/yy', maxDate: '-18Y' });这个可以解决
    • 你试过这个@Martin
    • 嘿,你能处理这个问题吗:bootstrapdatepicker我是在一周前添加的,一直在研究但似乎无法找到解决方案。非常感谢你的帮助
    • 我也回答了这个问题。看看@Martin
    【解决方案3】:

    带有 JS 日期和引导日期选择器:

    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth() + 1; //January is 0!
    
    var yyyy = today.getFullYear() -18;
    if (dd < 10) {
        dd = '0' + dd;
    } 
    if (mm < 10) {
        mm = '0' + mm;
    } 
    var yearsago = mm + '/' + dd + '/' + yyyy;
    

    或使用 Moment.js

    var yearsago = moment(new Date()).subtract(18, 'years').format("DD-MM-YYYY");

    $('#dob').datepicker('setStartDate', yearsago);
    

    $('#dob').datepicker({ 
       startDate: yearsago
    });
    

    【讨论】:

    • ,, 对如何在日期选择器上实现逻辑感到困惑
    • 对我来说 minDate 不能与引导日期选择器一起使用。它与 js datepicker 一起工作正常。对于引导日期选择器,请使用 startDate 而不是最小日期,并在其中简单地传递 18 年之前的日期
    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 2021-12-22
    • 2022-01-22
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    相关资源
    最近更新 更多