如何只读一个复选框?没有禁用?

Nag*_*aga 36 javascript checkbox

我有一个表单,我必须将表单值发布到我的动作类.在这种形式中,我有一个需要只读的复选框.我尝试过设置,disabled="true"但在发布到动作类时不起作用.

所以请指教?

Kun*_*han 95

没有属性可以使复选框只读.但你可以尝试这个技巧.

<input type="checkbox" onclick="return false" />
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 不错的技巧,这样我就不需要与隐藏字段一起创建一些虚拟字段。 (3认同)

Pat*_*ott 33

<input type="checkbox" checked onclick="return false;" onkeydown="return false;"/>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/2srjc/

如果您担心Tab键顺序,则仅在未按下Tab键时为keydown事件返回false:

<input type="checkbox" checked onclick="return false;" onkeydown="e = e || window.event; if(e.keyCode !== 9) return false;"/>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/2srjc/149/

  • 谢谢..它现在工作了..由于if情况导致了问题..谢谢 (2认同)

Ale*_*leX 19

您可以通过CSS轻松完成此操作. HTML:

<form id="aform" name="aform" method="POST">
    <input name="chkBox_1" type="checkbox" checked value="1" readonly />
    <br/>
    <input name="chkBox_2" type="checkbox" value="1" readonly />
    <br/>
    <input id="submitBttn" type="button" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

CSS:

input[type="checkbox"][readonly] {
  pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)

演示

  • 这不会阻止通过键盘勾选复选框(选项卡到复选框,然后点击空格键). (8认同)
  • 如果复选框后面跟着一个标签(也是可点击的),我们也可以添加这个 CSS: input[type="checkbox"][readonly] + label { pointer-events: none; } (2认同)

MRo*_*ues 11

我个人喜欢这样做:

<input type="checkbox" name="option" value="1" disabled="disabled" />
<input type="hidden" name="option" value="1">
Run Code Online (Sandbox Code Playgroud)

我认为这样做有两个原因:

  1. 用户清楚地了解到他无法编辑此值
  2. 提交表单时会发送该值.

  • 聪明而简单。+1 (2认同)

Vik*_* S. 7

您可以简单地添加onclick="return false"- 这将停止浏览器执行默认操作(复选框选中/未选中将不会更改)


Luc*_* C. 6

制作一个没有名称和值的假复选框,强制将值放在隐藏字段中:

<input type="checkbox" disabled="disabled" checked="checked">
<input type="hidden" name="name" value="true">
Run Code Online (Sandbox Code Playgroud)

注意:如果您在复选框中输入名称和值,它无论如何都会被同名的输入覆盖