在Web开发中,有时候需要显示一些复选框(checkbox),表明这个地方是可以进行勾选操作的,但是有时候是只想告知用户"这个地方是可以进行勾选操作的"而不想让用户在此处勾选(比如在信息展示页面),这时候就需要将复选框设置成只读的效果。
提到只读,很容易想到使用readonly属性,但是对于复选框来说,这个属性和期望得到的效果是有差别的。原因在于readonly属性关联的是页面元素的value属性(例如textbox,设置了readonly就不能修改输入框的文本内容),而复选框的勾选/取消并不改变其value属性,改变的只是一个checked状态。所以对于checkbox来说,设置了readonly,仍然是可以勾选/取消的。
和readonly类似的,还有一个disabled属性,这个属性的作用是设置页面元素为不可用,即不可进行任何交互操作(包括不可修改value属性、不可修改checked状态等)。但是问题也来了,就是它也不能向后台传递数据了。因为disabled
属性使复选框完全失效了,不能用于页面交互,也不能修改value、checked的值了
但是,无论是readonly还是disabled,都没有实现我们期望的效果。既然直接实现不了,那么我们可以变通一下,模拟实现。代码如下:
<input type="checkbox" name="chkAllowed" onclick="return false;" checked="checked" />
主要通过设置onclick
事件,来控制checked
值 ,使其值变化失效,以此实现CheckBox的只读设置。也可使用下面设置:
<script language="javascript">
$(function(){
$("input[type='checkbox']").click(function(){
this.checked = !this.checked;
});
});
</script>