如果在页面加载时勾选复选框并且在单击时禁用输入

Disable input if checkbox is ticked on page load AND when it is clicked

我看过很多描述如何检查复选框是否被选中的问题,但其中 none 给出了我需要的答案。我想检查复选框是否在页面加载时被选中,如果是,则禁用输入。然后我需要在页面加载后框为 checked/uncheked 时更改禁用的输入。

这是我的:

jQuery(document).ready(function($) {
    if ($('.is-repeat-event').prop('checked')) {
      $('.event-date').prop('disabled', 'true' );
    }
    $('.is-repeat-event').change(function(){
        var d = this.checked ? 'true' : 'false';
        $('.event-date').prop('disabled', d );
    });
});

它自己的任何一部分都有效,但将它们放在一起不起作用(.change 事件对输入没有影响)。

那是因为 属性 禁用需要设置为布尔值 true/false。也可以绑定后触发事件,查看页面加载的相关变化:

$('.is-repeat-event').change(function(){
   $('.event-date').prop('disabled', this.checked );
}).change();

尝试使用 trigger():

$(function() {
  $('.is-repeat-event').on('change', function(e) {
    $('.event-date').prop('disabled', this.checked);
  }).trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div>
  <label>Repeat
    <input type='checkbox' class="is-repeat-event" checked='' />
  </label>
</div>
Event Date
<input type='date' class="event-date" value="2015-07-12" />