防止完全单击单选按钮

时间:2013-12-31 20:33:14

标签: javascript jquery html

这一直困扰着我一段时间。我试图阻止用户点击单选按钮,具体取决于用户是否有权访问。第一个解决方案是执行以下操作:

没有禁用

<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的行为与此

不同

2 个答案:

答案 0 :(得分:6)

您应该为不可选择的属性添加“已禁用”属性。你真的不需要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禁用或隐藏用户的输入将增强用户体验,但是一个邪恶的用户可以解决这些问题。

答案 1 :(得分:2)

我会使用javascript来显示/隐藏用户有权访问的元素。有两个原因。 1)如果他们只能看到他们可以操作的表单元素,那么这是一种更好的用户体验。

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

它可以像在php条件中包装js代码一样简单,即......

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