我以为他们可以,但是因为我不把钱放在我的嘴里(可以这么说)设置readonly属性实际上似乎没有做任何事情.
我宁愿不使用Disabled,因为我希望检查复选框与表单的其余部分一起提交,我只是不希望客户端在某些情况下能够更改它们.
你可以用这个:
这是有效的,因为从click事件返回false会停止执行链继续.
READONLY
不适用于复选框,因为它会阻止您编辑字段的值,但是使用复选框实际上您正在编辑字段的状态(打开||关闭)
来自faqs.org:
重要的是要理解,READONLY只是阻止用户更改字段的值,而不是与字段交互.例如,在复选框中,您可以打开或关闭它们(从而设置CHECKED状态),但不要更改字段的值.
如果您不想使用disabled
但仍想提交该值,那么如何将值作为隐藏字段提交,并在不符合编辑条件时将其内容打印给用户呢?例如
// user allowed change if($user_allowed_edit) { echo ' Check value'; } else { // Not allowed change - submit value.. echo ''; // .. and show user the value being submitted echo ' Check value'; }
这是一个您无法更改的复选框:
只需添加disabled="disabled"
为属性即可.
编辑以解决评论:
如果您希望回发数据,则简单的解决方案是将相同的名称应用于隐藏的输入:
这样,当复选框设置为"禁用"时,它仅用于数据的可视化表示,而不是实际"链接"到数据.在回发中,当禁用复选框时,将发送隐藏输入的值.
但是你绝对必须验证服务器上的数据以确保它没有被更改.
另一个"简单解决方案":
disabled ="disabled"/ disabled = true
这提出了一些可用性问题.
如果您想显示一个复选框,但不想让它与之互动,为什么即使是一个复选框呢?
但是,我的方法是使用disabled(用户希望禁用复选框不可编辑,而不是使用JS使启用的不可用),并使用javascript添加表单提交处理程序,在表单之前启用复选框提交.通过这种方式,您可以发布您的值.
即是这样的:
var form = document.getElementById('yourform'); form.onSubmit = function () { var formElems = document.getElementsByTagName('INPUT'); for (var i = 0; i , formElems.length; i++) { if (formElems[i].type == 'checkbox') { formElems[i].disabled = false; } } }
用jquery:
$(':checkbox[readonly]').click(function(){ return false; });
提供一些视觉提示(css,text,...)仍然是一个好主意,控件不会接受输入.
我用它来实现结果:
我碰巧注意到下面给出的解决方案.发现它是我对同一问题的研究.我不是谁发布它但它不是由我制作的.它使用jQuery:
$(document).ready(function() { $(":checkbox").bind("click", false); });
这将使复选框只读,这将有助于向客户端显示只读数据.
onclick="javascript: return false;"
会对你有用,我正在使用它
这里的一些答案似乎有点迂回,但这是一个小小的黑客.
?然后在jquery中,您可以选择以下两个选项之一:
$(document).ready(function(){ //first option, you don't need the disabled attribute, this will prevent //the user from changing the checkbox values $("input[name^='chkBox_1']").click(function(e){ e.preventDefault(); }); //second option, keep the disabled attribute, and disable it upon submit $("#submitBttn").click(function(){ $("input[name^='chkBox_1']").attr("disabled",false); $("#aform").submit(); }); });
演示:http: //jsfiddle.net/5WFYt/