如何发布/提交已禁用的输入复选框?

AnA*_*ice 125 html forms html-input

我有一个复选框,在某些条件下,需要禁用.原来HTTP不会发布禁用的输入.

我怎么能绕过那个?提交输入,即使它被禁用并保持输入被禁用?

Fra*_*ita 103

更新:READONLY不适用于复选框

您可以使用disabled="disabled"但此时复选框的值不会显示在POST值中.其中一个策略是在同一表单中添加一个隐藏字段,保存复选框的值,并从该字段读取值

只需disabled改为readonly

  • 为了使它成为有效的HTML,特别是将readonly的值设置为readonly,即:`<input name ="foo"value ="bar"readonly ="readonly"/>` (7认同)
  • 要像"禁用"字段一样将"只读"输入字段设置为LOOK,请设置'style ="color:gray; background-color:#F0F0F0;"'. (5认同)
  • @MattHuggins设置only-attribute-name属性的值,如checked,readonly等...和非对属性的结束斜杠与HTML有效性无关 - 这些是XHTML有效性所需要的...... (3认同)
  • `readonly` 将不起作用,因为您将无法使用此类标签发布复选框的值,使用 `disabled` 和隐藏的输入元素来保存复选框的值,请参阅:http://stackoverflow.com/ a/8274787/448816 (2认同)

mik*_*k-t 89

我已经解决了这个问题.

由于readonly="readonly"标签不起作用(我尝试过不同的浏览器),你必须使用disabled="disabled" .但是你的复选框的值不会发布...

这是我的解决方案:

要在同一时间获得"只读"外观和POST复选框的值,只需添加一个隐藏的"输入",其名称和值与复选框相同.您必须将其保留在复选框旁边或相同<form></form>标签之间:

<input type="checkbox" checked="checked" disabled="disabled" name="Tests" value="4">SOME TEXT</input>

<input type="hidden" id="Tests" name="Tests" value="4" />
Run Code Online (Sandbox Code Playgroud)

另外,只是为了让你知道readonly="readonly", readonly="true", readonly="",或者只是READONLY不解决这个问题!我花了几个小时来搞清楚!

此参考也不相关(可能还没有,或者不再,我不知道):http: //www.w3schools.com/tags/att_input_readonly.asp


Tri*_*ing 73

如果您对使用JQuery感到满意,请在提交表单时删除disabled属性:

$("form").submit(function() {
    $("input").removeAttr("disabled");
});
Run Code Online (Sandbox Code Playgroud)


jes*_*vin 10

您可以这样处理...对于每个复选框,创建一个具有相同name属性的隐藏字段.但是使用您可以测试的某个默认值设置该隐藏字段的值.例如..

<input type="checkbox" name="myCheckbox" value="agree" />
<input type="hidden" name="myCheckbox" value="false" />
Run Code Online (Sandbox Code Playgroud)

如果在提交表单时"选中"复选框,则表单参数的值将为

"agree,false"
Run Code Online (Sandbox Code Playgroud)

如果未选中该复选框,则该值将为

"false"
Run Code Online (Sandbox Code Playgroud)

你可以使用任何值而不是"false",但你明白了.

  • 当你为一个问题写出一些复杂的解决方案时,你是不是只讨厌它,然后当你刷新时,有人(比如Francesco)去写一个简单的单行程?;) (5认同)

Pao*_*ass 8

<input type="checkbox" checked="checked" onclick="this.checked=true" />
Run Code Online (Sandbox Code Playgroud)

我从问题开始:"如何发布/提交被禁用的输入复选框?" 在我的回答中,我跳过评论:"如果我们要禁用复选框,我们肯定需要保留一个带前缀的值(选中或取消选中),我们也希望用户知道它(否则我们应该使用隐藏类型和不是复选框)".在我的回答中,我认为我们总是要保持一个复选框检查,并且代码以这种方式工作.如果我们点击那个ckeckbox它将永远被检查,其值将被POSTED/Submitted!以同样的方式,如果我写onclick ="this.checked = false"没有checked ="checked"(注意:默认是未选中)它将永远未选中,其值将不是POSTED/Submitted!.


小智 7

最简单的方法是:

<input type="checkbox" class="special" onclick="event.preventDefault();" checked />
Run Code Online (Sandbox Code Playgroud)

这将阻止用户取消选中此复选框,并且在提交表单时仍会提交其值.如果您希望用户无法选中此复选框,请选中此选项.

此外,您可以在满足特定条件后使用javascript清除onclick(如果这就是您所追求的).这是一个肮脏的小提琴,显示我的意思.它并不完美,但你得到了要点.

http://jsfiddle.net/vwUUc/


小智 7

创建一个CSS类,例如:

.disable{
        pointer-events: none;
        opacity: 0.5;
}
Run Code Online (Sandbox Code Playgroud)

应用此类而不是禁用属性