我认为他们可以,但我没有把我的钱放在我的嘴(这么说)设置只读属性实际上似乎没有做任何事情。
我宁愿不使用Disabled,因为我希望选中的复选框与表单的其余部分一起提交,我只是不希望客户端能够在某些情况下更改它们。
我认为他们可以,但我没有把我的钱放在我的嘴(这么说)设置只读属性实际上似乎没有做任何事情。
我宁愿不使用Disabled,因为我希望选中的复选框与表单的其余部分一起提交,我只是不希望客户端能够在某些情况下更改它们。
当前回答
<input type="checkbox" onclick="this.checked=!this.checked;">
但你绝对必须验证服务器上的数据,以确保它没有被更改。
其他回答
我会使用readonly属性
<input type="checkbox" readonly>
然后使用CSS禁用交互:
input[type='checkbox'][readonly]{
pointer-events: none;
}
注意,使用伪类:read-only在这里不起作用。
input[type='checkbox']:read-only{ /*not working*/
pointer-events: none;
}
或者是:
$('your selector').click(function(evt){evt.preventDefault()});
最简单的(在我看来):
onclick="javascript:{this.checked = this.defaultChecked;}"
我用这个方法得到了如下结果:
<input type=checkbox onclick="return false;" onkeydown="return false;" />
当将一个HTML复选框发布到服务器时,它有一个字符串值'on'或''。
Readonly不会停止用户编辑复选框,disabled会停止返回的值。 解决这个问题的一种方法是使用一个隐藏元素来存储实际值,而显示的复选框是一个禁用的dummy。通过这种方式,复选框状态在帖子之间被持久化。
这是一个函数。它使用'T'或'F'的字符串,你可以以任何你喜欢的方式更改它。这是在一个ASP页面中使用的使用服务器端的VB脚本。
public function MakeDummyReadonlyCheckbox(i_strName, i_strChecked_TorF)
dim strThisCheckedValue
if (i_strChecked_TorF = "T") then
strThisCheckedValue = " checked "
i_strChecked_TorF = "on"
else
strThisCheckedValue = ""
i_strChecked_TorF = ""
end if
MakeDummyReadonlyCheckbox = "<input type='hidden' id='" & i_strName & "' name='" & i_strName & "' " & _
"value='" & i_strChecked_TorF & "'>" & _
"<input type='checkbox' disabled id='" & i_strName & "Dummy' name='" & i_strName & "Dummy' " & _
strThisCheckedValue & ">"
end function
public function GetCheckbox(i_objCheckbox)
select case trim(i_objCheckbox)
case ""
GetCheckbox = "F"
case else
GetCheckbox = "T"
end select
end function
在ASP页面的顶部,你可以提取持久值…
strDataValue = GetCheckbox(Request.Form("chkTest"))
当你想输出你的复选框时,你可以这样做…
response.write MakeDummyReadonlyCheckbox("chkTest", strDataValue)
我已经测试过了,它工作得很好。它也不依赖于JavaScript。