我认为他们可以,但我没有把我的钱放在我的嘴(这么说)设置只读属性实际上似乎没有做任何事情。
我宁愿不使用Disabled,因为我希望选中的复选框与表单的其余部分一起提交,我只是不希望客户端能够在某些情况下更改它们。
我认为他们可以,但我没有把我的钱放在我的嘴(这么说)设置只读属性实际上似乎没有做任何事情。
我宁愿不使用Disabled,因为我希望选中的复选框与表单的其余部分一起提交,我只是不希望客户端能够在某些情况下更改它们。
当前回答
目前的大多数答案都有以下一个或多个问题:
只检查鼠标而不是键盘。 只检查页面加载。 挂钩总是流行的变更或提交事件,如果有其他东西挂钩它们,它们就不会总是有效。 需要一个隐藏的输入或其他特殊的元素/属性,你必须撤销,以便重新启用复选框使用javascript。
下面的方法很简单,没有这些问题。
$('input[type="checkbox"]').on('click keyup keypress keydown', function (event) {
if($(this).is('[readonly]')) { return false; }
});
如果复选框是只读的,它不会改变。如果不是,也会是。它确实使用了jquery,但你可能已经在使用它了…
它的工作原理。
其他回答
我的解决方案实际上与FlySwat的解决方案相反,但我不确定它是否适用于您的情况。我有一组复选框,每个复选框都有一个提交表单的onClick处理程序(它们用于更改表的过滤器设置)。我不想允许多次单击,因为第一次单击之后的后续单击将被忽略。所以我禁用所有复选框后,第一次点击,并提交后的形式:
onclick = " document.forms [' form1’]。submit ();$('#filters input').each(function() {this。Disabled = true});"
复选框位于ID为“filters”的span元素中——代码的第二部分是一个jQuery语句,它遍历复选框并禁用每个复选框。这样,复选框值仍然通过表单提交(因为表单是在禁用它们之前提交的),并且它可以防止用户更改它们,直到页面重新加载。
onclick="javascript: return false;"
在这里,你们没有人想到的是,你们都在使用JavaScript,任何用户都可以很容易地绕过它。
简单地禁用它将禁用所有JQuery/Return False语句。
只读复选框的唯一选项是服务器端。
显示他们,让他们改变他们,但不接受新的帖子数据从他们。
<input type="checkbox" readonly="readonly" name="..." />
jquery:
$(':checkbox[readonly]').click(function(){
return false;
});
它仍然可能是一个好主意,给一些视觉提示(css,文本,…),控件将不接受输入。
<input name="testName" type="checkbox" disabled>