【问题标题】:checkbox enable/disable from jquery从 jquery 启用/禁用复选框
【发布时间】:2020-05-11 09:15:30
【问题描述】:

我有一个关于 onclick 操作的问题。 点击“all”复选框后,<select>被屏蔽,但没有“cl”被取消选中。

<form>
  <input type="checkbox" class="custom-control-input" id="all" name="all" onclick="this.form.elements['oh'].disabled = this.form.elements['cl'].removeAttr('checked') = this.checked">

  <select id="oh" name="oh">
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">oprion 3</option>
  </select>

  <input type="checkbox" id="cl" name="cl">
</form>

【问题讨论】:

  • 最好的to avoid inline handlers,他们有一个疯狂的范围链,需要全局污染,并且存在引用转义问题。请改用addEventListener
  • 我给你做了一个sn-p。请修复控制台错误 - 我用表单标签包裹以消除一个错误 - 您正在将 jQuery 函数混合到 DOM 编码中。 this 不是 jQuery 对象
  • 正在进行很多如意的编码。请描述您希望发生的事情,而不是发布 X/Y 问题
  • 你不能分配给.removeAttr('checked')
  • 请同时检查您的浏览器控制台是否有错误。这些天的浏览器会隐藏错误,除非您有第 3 方扩展。 "but no "cl" is unchecked" - 但是控制台中有一个错误向您解释了这个问题(可能还不是您完全理解的方式,但它已经在那里解释了 - 所以应该是问“为什么我会得到”removeAttr is not a function”,而不是问为什么它“什么都不做”(释义)。

标签: javascript jquery checkbox checked


【解决方案1】:

我相信你可能是这个意思

$("#all").on("click",function() {
  const chk = this.checked;
  $("#oh").prop("disabled",chk)
  $("#cl").prop('checked',!chk)
})  
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input type="checkbox" class="custom-control-input" id="all" name="all" />

  <select id="oh" name="oh">
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">oprion 3</option>
  </select>

  <input type="checkbox" id="cl" name="cl">
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多