协慌网

登录 贡献 社区

HTML 复选框可以设置为只读吗?

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

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

答案

你可以用这个:

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

这是有效的,因为从 click 事件返回 false 会停止执行链继续。

READONLY不适用于复选框,因为它会阻止您编辑字段的 ,但是使用复选框您实际上正在编辑字段的状态 (打开 || 关闭)

来自faqs.org

重要的是要理解,READONLY 只是阻止用户更改字段的值,而不是与字段交互。例如,在复选框中,您可以打开或关闭它们(从而设置 CHECKED 状态),但不要更改字段的值。

如果您不想使用已disabled但仍想提交值,那么如果将值作为隐藏字段提交并仅在不符合编辑条件时将其内容打印给用户呢?例如

// user allowed change
if($user_allowed_edit)
{
    echo '<input type="checkbox" name="my_check"> Check value';
}
else
{
    // Not allowed change - submit value..
    echo '<input type="hidden" name="my_check" value="1" />';
    // .. and show user the value being submitted
    echo '<input type="checkbox" disabled readonly> Check value';
}

这是一个您无法更改的复选框:

<input type="checkbox" disabled="disabled" checked="checked">

只需添加disabled="disabled"作为属性即可。


编辑以解决评论:

如果您希望回发数据,则简单的解决方案是将相同的名称应用于隐藏的输入:

<input name="myvalue" type="checkbox" disabled="disabled" checked="checked"/>
<input name="myvalue" type="hidden" value="true"/>

这样,当复选框设置为 “禁用” 时,它仅用于数据的可视化表示,而不是实际 “链接” 到数据。在回发中,当禁用复选框时,将发送隐藏输入的值。