【问题标题】:checkbox checked issue in JqueryJquery中的复选框检查问题
【发布时间】:2019-11-02 13:19:26
【问题描述】:

我想在文档加载时设置复选框checked,如果复选框value="1",则取消选中value="0"

<input type="checkbox" value="1">
<input type="checkbox" value="0">
<input type="checkbox" value="1">

jquery:这是错误的,尝试了很多东西

$(document).ready ('input[type="checkbox"]', function(event) {
  if ($(this).val==1) {
    $(this).is(":checked")
  }
});

JSFiddle

【问题讨论】:

标签: javascript jquery


【解决方案1】:

.ready() 接受一个函数作为单个参数,在 DOM 准备好后执行。

您不需要任何条件来手动检查该值。您可以简单地使用 attribute 选择器:

$('input[type=checkbox][value=1]').attr('checked', true);

$(document).ready(function() {
  $('input[type=checkbox][value=1]').attr('checked', true);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" value="1">
<input type="checkbox" value="0">
<input type="checkbox" value="1">

【讨论】:

  • @Fayakon,从逻辑上讲,该解决方案应该有效。如果没有看到带有 json 的示例代码,真的很难说出这个问题:)
  • 只是好奇我们如何将任何变量作为值传递? $('input[type=checkbox][variable=1]').attr('checked', true);
  • @Fayakon,如果v 是值,那么你可以写$('input[type=checkbox][value='+v+']').attr('checked', true);
【解决方案2】:

有两个错误。首先这一行 ready ('input[type="checkbox"]', function(event) { .ready 接收一个回调函数,你的代码在那里是错误的。其次在if ($(this).val==1) { val 是一个方法。所以这需要braces。您只能使用属性选择器并将其标记为已选中。同样$(this).is(":checked") 返回一个布尔值,但它从不检查复选框

$(document).ready(function() {

  $('input[type="checkbox"][value="1"]').prop('checked', true)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" value="1">
<input type="checkbox" value="0">
<input type="checkbox" value="1">

【讨论】:

  • 数据以 json 格式加载,您的代码可以正常使用核心值,但是当 json 将值更改为 0/1 时,复选框不会更改。
  • @Fayakon 您之前从未告诉过它是从 json 加载的。在这种情况下,您需要显示更多加载 json 的代码
  • 谢谢你想通了。
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多