【问题标题】:Disable input if checkbox is ticked on page load AND when it is clicked如果在页面加载时勾选复选框并且单击它时禁用输入
【发布时间】:2015-09-26 05:43:48
【问题描述】:

我查看了很多问题,这些问题描述了如何检查复选框是否被选中,但没有一个给出我需要的答案。我想检查是否在页面加载时选中了复选框,如果是,则禁用输入。然后我需要在页面加载后选中/取消选中该框时更改禁用的输入。

这就是我所拥有的:

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 视为布尔值而不是字符串?
  • 是的,就可以了!谢谢:)

标签: javascript jquery checkbox input disabled-input


【解决方案1】:

尝试使用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" />

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的提示,这好多了,但是阻止代码工作的是字符串
    • @Ralphonz:很高兴它有帮助。不要忘记投票并接受帮助的答案
    猜你喜欢
    • 1970-01-01
    • 2012-02-13
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多