【发布时间】:2013-09-12 13:30:39
【问题描述】:
我有 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 总是最近选中复选框和最后选中复选框。比如:如果我有复选框 1、2、3。最初,当我选择复选框 2 时,我在警报中得到 2,但是当我选择 3 时,我得到 2,3。我认为这里发生的事情是代码通过具有特定类的所有复选框,它仍然认为我有复选框 2 checked 考虑到我刚刚使用 click 函数清除/取消选中。
有人对我如何解决这个问题有建议吗?
谢谢
注意:由于用户界面,无法使用单选按钮。
【问题讨论】:
-
为什么不只使用单选按钮?
-
由于 UI 原因无法使用单选按钮。
-
将
click更改为change -
sFilter = sFilter + (this.checked ? $(this).val() : "");有什么理由将 sFilter 以前的值附加到它?
-
用户界面?有人错了。支票是“随心所欲”的通用符号,而收音机则是“只选一个”。用户对此非常了解。如果你强迫他们只检查一台,那么在他们应该得到收音机的时候给他们检查会让一些人感到困惑。