【问题标题】:Disable fields on checked禁用选中的字段
【发布时间】:2015-08-31 09:06:00
【问题描述】:

我试图在选中复选框时禁用字段集中的 2 个选择字段。我也尝试过getElementByIdgetElementsByTagName.attr() 之类的方法,但它不起作用..

我希望在选中时像这样将disabled 添加到fieldset

<fieldset id="test" disabled>
    <div class="col-lg-6">
        <?php echo $this->Form->input('frequency_remarks'); ?>
    </div>
    <div class="col-lg-6">
        <?php echo $this->Form->input('duration_remarks'); ?>
    </div>
</fieldset>

复选框:

<div class="checkbox">
    <label for="CommentFrequencyOk">
        <input type="hidden" name="data[Comment][frequency_ok]" id="CommentFrequencyOk_" value="0" />
        <input type="checkbox" name="data[Comment][frequency_ok]" class="checkbox" value="1" id="CommentFrequencyOk" /> Frequency
    </label>
</div>

脚本:

$('#CommentFrequencyOk').checked(function () {
    $('#test').setAttribute('disabled');
});

【问题讨论】:

    标签: javascript jquery html javascript-events


    【解决方案1】:

    建议:

    1. 使用on('change')绑定事件,checked()是无效事件
    2. 使用prop 设置disabled 状态
    3. 使用checked复选框的属性来改变fieldset的状态
    4. 您不能在 jQuery 对象上调用 Vanilla Javascript 方法,请使用 jQuery 方法。前任。 attr() 而不是 setAttribute 上的 $('#test')

    $('#CommentFrequencyOk').on('change', function() {
      $('#test').prop('disabled', this.checked);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
    <fieldset id="test">
      <div class="col-lg-6">
        <input id="frequency_remarks" />
      </div>
      <div class="col-lg-6">
        <input id="duration_remarks" />
      </div>
    </fieldset>
    
    <div class="checkbox">
      <label for="CommentFrequencyOk">
        <input type="hidden" name="data[Comment][frequency_ok]" id="CommentFrequencyOk_" value="0" />
        <input type="checkbox" name="data[Comment][frequency_ok]" class="checkbox" value="1" id="CommentFrequencyOk" />Frequency
      </label>
    </div>

    【讨论】:

    • @kovogel 你能解释一下checkbox上changeclick事件的区别、优缺点吗
    • 只有在实际状态“checked”改变时才会触发。
    【解决方案2】:

    应该这样做。现在您只需插入您的选择字段 id 而不是测试。

    $('#CommentFrequencyOk').change(function() {
       $('#test').prop('disabled', $(this).prop('checked'));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多