这一直困扰着我一段时间。我试图阻止用户点击单选按钮,具体取决于用户是否有权访问。第一个解决方案是执行以下操作:
没有禁用
<input type="radio" name="my_radio1" id="abc1" value="5">
<input type="radio" name="my_radio1" id="abc2" value="0">
<input type="radio" name="my_radio1" id="abc3" value="1" checked>
禁用预选
<input type="radio" name="my_radio2" id="abc1" onclick="return false;" value="5">
<input type="radio" name="my_radio2" id="abc2" onclick="return false;" value="0">
<input type="radio" name="my_radio2" id="abc3" onclick="return false;" value="1" checked>
禁用且无预选
<input type="radio" name="my_radio3" id="abc1" onclick="return false;" value="5">
<input type="radio" name="my_radio3" id="abc2" onclick="return false;" value="0">
<input type="radio" name="my_radio3" id="abc3" onclick="return false;" value="1">
如下所示:http://jsfiddle.net/93CqR/6/
这适用于单选按钮 ALREADY ,但不适用于尚未选中的框(如上面的示例3所示)。这有什么已知的解决方法吗?
Chrome和IE的行为与此
不同答案 0 :(得分:6)
您应该为不可选择的属性添加“已禁用”属性。你真的不需要javascript。
<input type="radio" name="my_radio2" id="abc1" value="5" disabled>
<input type="radio" name="my_radio2" id="abc2" value="0" disabled>
<input type="radio" name="my_radio2" id="abc3" value="1" checked disabled>
更新我不知道这里的实际用例,但如果您还没有,则应在服务器上进行实际检查。使用javascript禁用或隐藏用户的输入将增强用户体验,但是一个邪恶的用户可以解决这些问题。
答案 1 :(得分:2)
我会使用javascript来显示/隐藏用户有权访问的元素。有两个原因。 1)如果他们只能看到他们可以操作的表单元素,那么这是一种更好的用户体验。
更重要的是 2)禁用的表单字段不会显示在post / get数组中。我在过去遇到过这个问题,如果你不知道为什么你的田地没有通过,这是一个非常令人沮丧的问题。
它可以像在php条件中包装js代码一样简单,即......
<?php if($userCantSeeThese): ?>
<script>
$('.classOfElementsUserShouldntSee').hide();
</script>
<?php endif; ?>