防止单选按钮被完全单击



这已经困扰了我一段时间了。我正在尝试阻止用户单击单选按钮,具体取决于用户是否有权这样做。第一个解决方案是执行以下操作:

未禁用

<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/

这适用于已选中的单选按钮,但不适用于尚未选中框(如上面的示例 3 所示)。是否有任何已知的解决方法?

Chrome和IE的行为与此不同

您应该为不可选择的属性添加"禁用"属性。你真的不需要javascript。

见 http://jsfiddle.net/Ma6TA/

<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 禁用或隐藏用户的输入将增强用户体验,但恶意用户可以绕过这些事情。

我会使用 javascript 来显示/隐藏用户有权访问的元素。原因有二。1)如果他们只能看到他们可以操作的表单元素,则会提供更好的用户体验。

更重要的是2)禁用的表单字段不会显示在post/get数组中。我过去遇到过这个问题,如果你不知道为什么你的领域没有通过,这是一个非常令人沮丧的问题。

它可以像将JS代码包装在PHP条件中一样简单,即...

<?php if($userCantSeeThese): ?>
<script>
$('.classOfElementsUserShouldntSee').hide();
</script>
<?php endif; ?>

最新更新