我有很多单选按钮,从我的数据库中获取一个值,如果它设置为“1”,我使单选按钮选中。
如果一个单选按钮被选中,并且用户再次单击它,我仍然希望能够清除这个按钮。有人有主意吗?$radio1
从数据库中获取数据,值为0、1或2
<input value="1" name="radio1" type="radio"<?php if($radio1==1){echo " checked";} ?>>
<input value="2" name="radio2" type="radio"<?php if($radio1==2){echo " checked";} ?>>
**Varun Malhotra的答案略有修改:**我修改了两行代码,对我来说更好。但总的来说,Varun的回答是完美的!
$('input[type="radio"]').click(function(){
var $radio = $(this);
// if this was previously checked
if ($radio.data('waschecked') == true)
{
$radio.prop('checked', false);
$radio.data('waschecked', false);
}
else
{
$radio.prop('checked', true);
$radio.data('waschecked', true);
}
// remove was checked from other radios
$radio.siblings('input[type="radio"]').data('waschecked', false);
});
8条答案
按热度按时间qxgroojn1#
我建议添加一个自定义属性来跟踪每个收音机的先前状态,如下所示:
您还需要将此属性添加到最初选中的单选标记中
JSFIDDLE DEMO
更新:
但是一定要确保你没有其他的radio-group来工作,否则你必须提供一些属性来指定这些按钮,比如我前面提到的name prop。
7z5jn7bk2#
这应该比其他解决方案更普遍地工作,因为它处理所有无线电不在同一父中的情况。
6qqygrtg3#
第一次单击时,在单击之前触发更改事件。你可以用它们。使用许多单选按钮组,即使您已预先选中单选按钮。
JSFIDDLE DEMO
t9eec4r04#
以下是我的解决方案,它适用于触摸设备以及鼠标点击:
https://codepen.io/robbiebow/pen/bjPvEO
brvekthn5#
试试这个
h7wcgrx36#
wvt8vs2t7#
我不知道为什么,但是用户softvar选择的答案对我不起作用,所以我在尝试了大约两个小时后,根据softvar的答案得出了以下答案。把它放在这里,以防它可能会帮助其他人。您可以根据从数据库中获得的“selected”值,在HTML中将“data-active”指定为0或1。
和/或
vojdkbi08#
这是我的通用解决方案。即使有多组单选按钮也有效。例如,如果您有多组具有相同“name”属性的按钮。很管用。