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

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


当前回答

只读对<input type='checkbox'>无效

所以,如果你需要从表单中禁用的复选框中提交值,你可以使用jQuery:

$('form').submit(function(e) {
    $('input[type="checkbox"]:disabled').each(function(e) {
        $(this).removeAttr('disabled');
    })
});

通过这种方式,在提交表单时从元素中删除禁用属性。

其他回答

我只是不希望客户在某些情况下能够更改它们。

READONLY本身不起作用。你可能可以用CSS做一些奇怪的事情,但我们通常只是禁用它们。

警告:如果它们被发布回来,那么客户端可以更改它们,句号。你不能依靠只读来阻止用户修改某些东西。总是可以使用fiddler或只是改变html w/firebug或诸如此类的东西。

<input name="testName" type="checkbox" disabled>
<input name="isActive" id="isActive" type="checkbox" value="1" checked="checked" onclick="return false"/>

为什么不在上面用一个空白div覆盖输入呢?

<div id='checkbox_wrap'>
   <div class='click_block'></div>
   <input type='checkbox' /> 
</div>

然后是CSS

 #checkbox_wrap{
   height:10px;
   width:10px;
   }
 .click_block{
   height: 10px;
   width: 10px;
   position: absolute;
   z-index: 100;
}

我用这个方法得到了如下结果:

<input type=checkbox onclick="return false;" onkeydown="return false;" />