Asp.net 如何让用户在复选框列表中只选择一个复选框

Asp.net 如何让用户在复选框列表中只选择一个复选框,asp.net,jquery,Asp.net,Jquery,我有一个复选框列表(下面有6项)。我有一个搜索按钮。如果用户单击“搜索”按钮,则会得到所有结果。 我正在使用.cs文件中的数据库绑定checkboxlist的项 条件1: 但现在,如果用户选中复选框[item1],则其将被选中 他尝试选择一个2复选框[item2],然后应取消选中firstselected复选框[item1]。只应选中复选框[item2] 条件2: 现在,如果用户已选中复选框1[item1],则它将被选中。现在,若用户再次点击checkboxi[item1],那个么它应该被取消选

我有一个复选框列表(下面有6项)。我有一个搜索按钮。如果用户单击“搜索”按钮,则会得到所有结果。 我正在使用.cs文件中的数据库绑定checkboxlist的项

条件1: 但现在,如果用户选中复选框[item1],则其将被选中 他尝试选择一个2复选框[item2],然后应取消选中firstselected复选框[item1]。只应选中复选框[item2]

条件2: 现在,如果用户已选中复选框1[item1],则它将被选中。现在,若用户再次点击checkboxi[item1],那个么它应该被取消选中

您可以用javascript或JQuery为我提供解决方案 任何帮助都会很好。期待解决方案
谢谢

为什么不使用单选按钮,它们非常适合您提到的用途

编辑:

foreach (ListItem listItem in checkBoxList.Items)
{
    listItem.Attributes.Add("onclick", "makeSelection(this);");
}
function makeSelection(checkBox)
{
    var checkBoxList = checkBox;
    while (checkBoxList.parentElement.tagName.toLowerCase() != "table")
    {
        checkBoxList = checkBoxList.parentElement;
    }

    var aField = checkBoxList.getElementsByTagName("input");
    var bChecked = checkBox.checked;

    for (i = 0; i < aField.length; i++)
    {
        aField[i].checked = (aField[i].id == checkBox.id && bChecked);
    }
}
若您一定要使用复选框列表,那个么将一些逻辑ID分配给这些复选框,以便您可以在JavaScript中访问它们。 在复选框的每个onclick事件上调用JavaScript,并在JavaScript循环中遍历并查看

  • 如果选中任何复选框,则选择其他复选框 比现在点击复选框, 然后将其取消选中
  • 如果已选中“当前”复选框 选中,然后切换它
您可以查看是否使用
$(“#checkboxId”)选中复选框。is(“:checked”)
如果选中复选框,则返回true


谢谢

为什么不使用单选按钮,它们非常适合您提到的用途

编辑:

foreach (ListItem listItem in checkBoxList.Items)
{
    listItem.Attributes.Add("onclick", "makeSelection(this);");
}
function makeSelection(checkBox)
{
    var checkBoxList = checkBox;
    while (checkBoxList.parentElement.tagName.toLowerCase() != "table")
    {
        checkBoxList = checkBoxList.parentElement;
    }

    var aField = checkBoxList.getElementsByTagName("input");
    var bChecked = checkBox.checked;

    for (i = 0; i < aField.length; i++)
    {
        aField[i].checked = (aField[i].id == checkBox.id && bChecked);
    }
}
若您一定要使用复选框列表,那个么将一些逻辑ID分配给这些复选框,以便您可以在JavaScript中访问它们。 在复选框的每个onclick事件上调用JavaScript,并在JavaScript循环中遍历并查看

  • 如果选中任何复选框,则选择其他复选框 比现在点击复选框, 然后将其取消选中
  • 如果已选中“当前”复选框 选中,然后切换它
您可以查看是否使用
$(“#checkboxId”)选中复选框。is(“:checked”)
如果选中复选框,则返回true


谢谢使用单选按钮。您将面临的唯一问题是何时取消选择单选按钮。您可以为单选按钮的“onClick”编写javascript。onClick功能可以检查单选按钮是否选中,如果未选中,则选择它,否则取消选择它

希望这有帮助


RDJ

使用单选按钮。您将面临的唯一问题是何时取消选择单选按钮。您可以为单选按钮的“onClick”编写javascript。onClick功能可以检查单选按钮是否选中,如果未选中,则选择它,否则取消选择它

希望这有帮助


RDJ

虽然我完全同意单选按钮是实现所描述用例的方式这一共识,但这里有一点jquery的剪贴,它将导致复选框的行为类似于单选按钮。您只需在复选框标记中添加一个“groupname”属性

HTML:


第1组-单选按钮行为
复选框1
复选框2
复选框3
复选框4
复选框5
第2组-单选按钮行为 复选框1
复选框2
复选框3
复选框4
复选框5
第3组正常行为 复选框1
复选框2
复选框3
复选框4
复选框5
Javascript:

    <script type="text/javascript">
    $(document).ready(function() {
        $('input[type=checkbox]').click(function() {
        var groupName = $(this).attr('groupname');

            if (!groupName)
                return;

            var checked = $(this).is(':checked');

            $("input[groupname='" + groupName + "']:checked").each(function() {
                $(this).prop('checked', '');
            });

            if (checked)
                $(this).prop('checked', 'checked');
        });
    });
</script>

$(文档).ready(函数(){
$('input[type=checkbox]')。单击(函数(){
var groupName=$(this.attr('groupName');
如果(!groupName)
返回;
var checked=$(this).is(':checked');
$(“输入[groupname=”“+groupname+”]:选中”)。每个(函数(){
$(this.prop('选中','');
});
如果(选中)
$(this.prop('checked','checked');
});
});

我确信有机会提高简洁性和性能,但这应该让您开始。

虽然我绝对同意单选按钮是实现所描述用例的方法这一共识,但这里有一个jquery的小片段,它将导致复选框的行为类似于单选按钮。您只需在复选框标记中添加一个“groupname”属性

HTML:


第1组-单选按钮行为
复选框1
复选框2
复选框3
复选框4
复选框5
第2组-单选按钮行为 复选框1
复选框2
复选框3
复选框4
复选框5
第3组正常行为 复选框1
复选框2
复选框3
复选框4
复选框5
Javascript:

    <script type="text/javascript">
    $(document).ready(function() {
        $('input[type=checkbox]').click(function() {
        var groupName = $(this).attr('groupname');

            if (!groupName)
                return;

            var checked = $(this).is(':checked');

            $("input[groupname='" + groupName + "']:checked").each(function() {
                $(this).prop('checked', '');
            });

            if (checked)
                $(this).prop('checked', 'checked');
        });
    });
</script>

$(文档).ready(函数(){
$('input[type=checkbox]')。单击(函数(){
var groupName=$(this.attr('groupName');
如果(!groupName)
返回;
var checked=$(this).is(':checked');
$(“输入[groupname=”“+groupname+”]:选中”)。每个(函数(){
$(this.prop('选中','');
});
如果(选中)
$(this.prop('checked','checked');
});
});

我确信有机会提高简洁性和性能,但这应该让您开始。

这是帮助我解决此问题的代码

只需添加脚本-

var objChkd

函数HandleOnCheck() {

var chkLst=document.getElementById('CheckBoxList1'); if(objChkd&&objChkd.checked)

}

并将客户端事件注册到页面上的“CheckBoxList1”中


添加(“onclick”,“return HandleOnCheck()”

这是帮助我解决这个问题的代码
foreach (ListItem listItem in checkBoxList.Items)
{
    listItem.Attributes.Add("onclick", "makeSelection(this);");
}
function makeSelection(checkBox)
{
    var checkBoxList = checkBox;
    while (checkBoxList.parentElement.tagName.toLowerCase() != "table")
    {
        checkBoxList = checkBoxList.parentElement;
    }

    var aField = checkBoxList.getElementsByTagName("input");
    var bChecked = checkBox.checked;

    for (i = 0; i < aField.length; i++)
    {
        aField[i].checked = (aField[i].id == checkBox.id && bChecked);
    }
}