我认为他们可以,但我没有把我的钱放在我的嘴(这么说)设置只读属性实际上似乎没有做任何事情。

我宁愿不使用Disabled,因为我希望选中的复选框与表单的其余部分一起提交,我只是不希望客户端能够在某些情况下更改它们。


当前回答

我会使用readonly属性

<input type="checkbox" readonly>

然后使用CSS禁用交互:

input[type='checkbox'][readonly]{
    pointer-events: none;
}

注意,使用伪类:read-only在这里不起作用。

input[type='checkbox']:read-only{ /*not working*/
    pointer-events: none;
}

其他回答

摘自https://stackoverflow.com/a/71086058/18183749

如果你不能使用'disabled'属性(因为它会擦除值的 input at POST),并注意到html属性'readonly'只工作 在文本区域和一些输入(文本,密码,搜索,据我所见), 最后,如果你不想重复你所有的 您可能会发现,带有隐藏输入逻辑的选择、复选框和单选 下面的函数或任何他的内部逻辑你喜欢:

    addReadOnlyToFormElements = function (idElement) {
        
            // html readonly don't work on input of type checkbox and radio, neither on select. So, a safe trick is to disable the non-selected items
            $('#' + idElement + ' input[type="checkbox"]:not(:checked)').prop('disabled',true); 
     
            // and, on the selected ones, to disable mouse/keyoard events and mimic readOnly appearance
            $('#' + idElement + ' input[type="checkbox"]:checked').prop('tabindex','-1').css('pointer-events','none').css('opacity','0.5');
        }

没有什么比删除这些只读更容易的了

removeReadOnlyFromFormElements = function (idElement) {

    // Remove the disabled attribut on non-selected
    $('#' + idElement + ' input[type="checkbox"]:not(:checked)').prop('disabled',false);

    // Restore mouse/keyboard events and remove readOnly appearance on selected ones
    $('#' + idElement + ' input[type="checkbox"]:checked').prop('tabindex','').css('pointer-events','').css('opacity','');
}

另一个“简单的解决方案”:

<!-- field that holds the data -->
<input type="hidden" name="my_name" value="1" /> 
<!-- visual dummy for the user -->
<input type="checkbox" name="my_name_visual_dummy" value="1" checked="checked" disabled="disabled" />

禁用=“禁用” / 禁用=真

尝试将复选框设置为只读,但不允许用户勾选。这将允许您POST复选框的值。为了这样做,您需要选择复选框的默认状态为Checked。

<input type="checkbox" readonly="readonly" onclick="this.checked =! this.checked;">

如果你想要上面的功能+不想接收复选框数据,试试下面的:

<input type="checkbox" readonly="readonly" disabled="disabled" onclick="this.checked =! this.checked;">

希望这能有所帮助。

只需使用如下所示的简单禁用标签。

<input type="checkbox" name="email"  disabled>

人们喜欢只读复选框和(以及)只读无线电组的主要原因是,不能更改的信息可以以输入的形式显示给用户。

好的,禁用控件就可以做到这一点——不幸的是禁用控件不能用键盘导航,因此违反了所有可访问性法规。这是我所知道的HTML中最大的问题。