简体   繁体   English

禁用单选按钮检查

[英]disabled radio button check

Good day, Are there any JavaScript method for “Warranty” radio button check, because “Warranty” should be disabled if purchase date is greater than 24 months.美好的一天,是否有任何 JavaScript 方法用于“保修”单选按钮检查,因为如果购买日期大于 24 个月,则应禁用“保修”。

I create “(Purchase date and Repair date)” The repair date must be later than the purchase date this part done and working 100%我创建“(购买日期和维修日期)”维修日期必须晚于购买日期这部分完成并且工作 100%

I only need help with “Warranty” should be disabled if purchase date is greater than 24 months.如果购买日期超过 24 个月,我只需要禁用“保修”的帮助。 Thanks in advance for the help.在此先感谢您的帮助。

 $(document).ready(function() { var today = new Date(); $('.dt1').datepicker({ format: 'mm-dd-yyyy', autoclose: true, endDate: "today", maxDate: today }).on('changeDate', function(date) { $(this).datepicker('hide'); var date2 = $('.dt1').datepicker('getDate'); date2.setDate(date2.getDate() + 1); $('.dt2').datepicker('setDate', date2); //sets minDate to dt1 date + 1 $('.dt2').datepicker('option', 'minDate', date2); }); $('.dt2').datepicker({ Format: 'mm-dd-yyyy', endDate: "today", maxDate: today, onClose: function() { var dt1 = $('.dt1').datepicker('getDate'); console.log(dt1); var dt2 = $('.dt2').datepicker('getDate'); if (dt2 <= dt1) { var minDate = $('.dt2').datepicker('option', 'minDate'); $('.dt2').datepicker('setDate', minDate); } } }); var a = moment('1/1/2019', 'DD/MM/YYYY'); var b = moment('getMonth()', 'DD/MM/YYYY'); var months = b.diff(a, 'months'); $('#res').text(months); });
 #repair { margin-left: 25em; } #purchase { margin-left: 10em; }
 <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> <:--Purchase Date--> <div id="purchase"> <label>Purchase Date:</label> <div> <input type="text" id="purchaseDate" class="dt1" /> </div> </div> <:--Repair Date--> <div id="repair"> <label>Repair Date:</label> <div> <input type="text" id="repairDate" class="dt2" /> </div> </div> <!--Warranty--> <div id="radios1"> <p>Under Warranty</p> <label class="form-check-label" for="gridRadios3">Warranty: </label> <input class="check-input" type="radio" name="gridRadios" id="gridRadios3" value="option1"><br> </div>

if I well understand, you can check date difference on every date change event:如果我很好理解,您可以检查每个日期更改事件的日期差异:

$(document).ready(function() {

    function isUnderWarranty() {
    let rDate = new Date($('#repairDate').val());
    let pDate = new Date($('#purchaseDate').val());
    console.log(rDate);
    console.log(pDate);
    let months24_ms = 1000 * 60 * 60 * 24 * 30.5 * 24;
    if(rDate - pDate < months24_ms) {
        console.log('ena');
        document.body.querySelector('#gridRadios3').disabled = false;
    } else {
        console.log('disa')
      document.body.querySelector('#gridRadios3').disabled = true;
    }
  }

  var today = new Date();
  $('#purchaseDate').datepicker({
    format: 'mm-dd-yyyy',
    onClose: isUnderWarranty
  });

  $('#repairDate').datepicker({
    Format: 'mm-dd-yyyy',
    onClose: isUnderWarranty
  });
});

I broke up what you were attempting to do into its seperate parts in the example below.在下面的示例中,我将您尝试执行的操作分解为单独的部分。

This will help keep your code organised and and managable, also I changed it to compare to 2 years rather than 24 months as months vary in length and it complicates the comparison, there is a amount of days variable available too.这将有助于使您的代码保持井井有条且易于管理,而且我将其更改为与 2 年而不是 24 个月进行比较,因为月份的长度各不相同,并且使比较复杂化,也有很多可用的天数。

Hope this helps and gives you an idea on how to better organise your code.希望这对您有所帮助,并让您了解如何更好地组织代码。

 var pd = $('#purchaseDate'); var rd = $('#repairDate'); var war = $('#gridRadios3'); $(function(){ initDatePicker(); pd.on('change',function(){ var date = $(this).datepicker('getDate'); updateRepairDatePicker(date); updateWarrantyRadio(date); }); }); function updateRepairDatePicker(date){ date.setDate(date.getDate()+1); rd.datepicker('setDate', date); rd.datepicker('option', {minDate: date, disabled:false}); } function updateWarrantyRadio(date){ var today = new Date(); //var difference_in_days = (today - date) / (1000 * 3600 * 24); var difference_in_years = (today - date) / (1000 * 3600 * 24 * 365); war.prop('disabled', difference_in_years > 2); } function initDatePicker(){ var today = new Date(); pd.datepicker({ format: 'mm-dd-yyyy', endDate: "today", maxDate: today }); rd.datepicker({ format: 'mm-dd-yyyy', disabled:true }); }
 .dt { margin-left: 1em; display:inline-block; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> <div id="purchase"> <label>Purchase Date:</label> <input type="text" id="purchaseDate" class="dt" /> </div> <div id="repair"> <label>Repair Date:</label> <input type="text" id="repairDate" class="dt" /> </div> <div id="radios1"> <p>Under Warranty</p> <label class="form-check-label" for="gridRadios3">Warranty: </label> <input class="check-input" type="radio" name="gridRadios" id="gridRadios3" value="option1"><br> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM