我想验证用户只能在listview中的每一行中只选择一个复选框

时间:2010-09-24 10:06:42

标签: javascript asp.net jquery

我在listtemplate中有两个复选框的listview。 我想验证用户每行只能选择一个复选框。

3 个答案:

答案 0 :(得分:2)

您所描述的行为是使用标准HTML单选按钮完成的。如果您将设计更改为使用这些设计,您将获得

的好处
  1. 用户只能选择一个项目,不需要额外的javascript
  2. 用户希望能够选择多个复选框,但只有一个单选按钮IE可以满足他们的期望
  3. 如果您仍然确定要使用jQuery,那么应该这样做。

    $(':checkbox').change(function(){
        if($(this).attr('checked')) {
            $(this).siblings(':checkbox').attr('checked',false);
        }
    });
    

答案 1 :(得分:0)

感谢您的回复。我还问过我的一位朋友,他给了我以下解决方案,工作正常。发布,如果有人需要它.-

说2个列中的ur复选框名为EmailCheckBox和SMSCheckBox

然后使用此代码切换每一行中的复选框:

$('input:checkbox[id*=EmailCheckBox]').click(uncheckOthercheckbox);
$('input:checkbox[id*=SMSCheckBox]').click(uncheckOthercheckbox);


        function uncheckOthercheckbox() {

            if (this.id.indexOf("EmailCheckBox") != -1) {

                var otherCheckBoxId = this.id.substring(0, this.id.indexOf("EmailCheckBox")) + "SMSCheckBox";
            }
            else {

                var otherCheckBoxId = this.id.substring(0, this.id.indexOf("SMSCheckBox")) + "EmailCheckBox";
            }

            var i = "#" + otherCheckBoxId;
            if (this.checked) {

                $(i).removeAttr('checked');
            }                

        }

答案 2 :(得分:0)

@vinit, 只是一点变化,你忘记了其他部分,

$('input:checkbox[id*=EmailCheckBox]').click(uncheckOthercheckbox);
$('input:checkbox[id*=SMSCheckBox]').click(uncheckOthercheckbox);

        function uncheckOthercheckbox() {

            if (this.id.indexOf("EmailCheckBox") != -1) {

                var otherCheckBoxId = this.id.substring(0, this.id.indexOf("EmailCheckBox")) + "SMSCheckBox";
            }
            else {

                var otherCheckBoxId = this.id.substring(0, this.id.indexOf("SMSCheckBox")) + "EmailCheckBox";
            }

            var i = "#" + otherCheckBoxId;
            if (this.checked) {

                $(i).removeAttr('checked');
            }
            else {

                if ($(i).attr('checked') === false) {
                    $(i).attr('checked', 'checked');
                }
            }

        }