我有3个复选框,需要用户一次最多选择一个,所以有一个代码,每次用户选择我的一个复选框。我取消选择所有其他并使用以下方法检查所选的:
$('input.myclass').click(function () {
$('input.myclass:checked').not(this).removeAttr('checked');
});
在这段代码的正下方,我也获得了复选框的值,并在页面的某处显示(为简单起见,让它保持警惕)。为此,我正在使用:
var sFilter = "";
$('input.myclass[type=checkbox]').each(function () {
sFilter = sFilter + (this.checked ? $(this).val() : "");
});
现在,发生的事情是sFilter
最近选中的复选框和最后选择的checbox。喜欢:如果我有复选框1,2,3。最初当我选择复选框2时,我在警报中得到2,但是当我选择3时,我得到2,3。我认为这里发生的是代码通过特定类的所有复选框,它仍然认为我有复选框2 checked
,考虑到我刚刚使用click
函数清除/取消选中。
有没有人建议如何解决这个问题?
由于
NB:由于用户界限,无法使用单选按钮。
答案 0 :(得分:2)
一种可能的解决方案是在这些复选框的点击事件中循环显示这些复选框。
即使你按下按钮点击它们就可以了。
检查此Jsfiddle - http://jsfiddle.net/LMgFz/
$('input.myclass').click(function () {
$('input.myclass:checked').not(this).removeAttr('checked');
var sFilter = "";
$('input.myclass[type=checkbox]').each(function () {
sFilter = sFilter + (this.checked ? $(this).val() : "");
});
alert(sFilter);
});
如果有意义的话?
答案 1 :(得分:1)
为什么不尝试这样的事情(这里是jsFiddle):
var sFilter = "";
$('input.myclass').click(function () {
$('input.myclass:checked').not(this).removeAttr('checked');
sFilter = (this.checked ? $(this).val() : "");
alert(sFilter);
});
每次点击,您都会更新sFilter
然后随意做任何事情。
如果您在取消选择时不想“提醒”,请尝试以下操作:
var sFilter = "";
$('input.myclass').click(function () {
$('input.myclass:checked').not(this).removeAttr('checked');
sFilter = (this.checked ? $(this).val() : "");
if (sFilter != "") alert(sFilter);
});