复选框属性选中为真,但不显示勾号

Posted

技术标签:

【中文标题】复选框属性选中为真,但不显示勾号【英文标题】:Check box attributes checked is true, but tick is not shown 【发布时间】:2013-07-04 00:38:22 【问题描述】:

我有两个复选框,我想让它们表现得像单选按钮(有时只选中一个)。

所以,我很容易找到一个可以解决问题的 jQuery 解决方案:

$("input:checkbox").click(function()
    var group = "input:checkbox[name='"+$(this).attr("name")+"']";
    $(group).attr("checked",false);
    $(this).attr("checked",true);
);

html 如下所示:

<div class="radio">
    <label for="q_is_active_true">Is active</label>
    <input name="radio_buttons" type="hidden" value="0"><input id="q_is_active_true" name="radio_buttons" type="checkbox" value="1">
    <label for="q_is_active_false">Is not active</label>
    <input name="radio_buttons" type="hidden" value="0"><input id="q_is_active_false" name="radio_buttons" type="checkbox" value="1">
</div>

但是当我点击其中一个复选框时,即使它的“check”属性设置为“checked”,也不会显示勾选:

【问题讨论】:

为什么要同名“radio_buttons”? @Sergio 创建一个我相信的小组 :) @MohammadAreebSiddiqui 这不适用于复选框。 @alex 这就是他试图实现的目的,将复选框制作为单选按钮 IDK 为什么? 【参考方案1】:

您需要通过property 设置检查状态以实现您想要的:

$("input:checkbox").click(function()
    var group = "input:checkbox[name='"+$(this).attr("name")+"']";
    $(group).prop("checked", false);
    $(this).prop("checked", true);
);

jsFiddle here.

【讨论】:

不 attr() 做同样的事情吗?如果不是,那么它们之间有什么区别? @MohammadAreebSiddiqui 阅读此***.com/questions/5874652/prop-vs-attr【参考方案2】:

你可以这样试试:

$('input[name=checkBoxName]').parents('span').addClass("checked");
$("input[name=checkBoxName]").prop('checked', 'checked');

第一行是在复选框中显示勾号,第二行是实际检查它。

【讨论】:

这是否与 UI 库有关,例如引导程序?我只是花了很多时间,这解决了这个问题。但据我所知,仅使用 prop(...) 设置也应该有效(复选框并不总是包含在 span 中),所以我不知道为什么这对我的情况有效。 这是用JQuery来勾选的。 只有第二行足够通用,可以用于其他人的案例。

以上是关于复选框属性选中为真,但不显示勾号的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 HTML 中复选框的选中标记颜色? [复制]

即使模型值为真,材料复选框也未选中

复选框checked 选中后不显示打钩

使用 mpdf 创建的可填写 PDF 未显示复选框

产品过滤器 - 根据选中/取消选中的多个复选框显示结果

在 Django 管理控制台中显示属性的勾号和十字图标