2

我在 asp.NET 中有一个带有 DataTextField 和 DataValueField 的数据绑定复选框列表。

现在,如果我在该列表中选择一个项目,我只需要该项目的值。

我找到了很多解决方案来查找所有选定项目的值,但这不是我需要的。我需要的唯一值是我刚刚选择或取消选择的值。

有没有办法用 jQuery 代码获取这个值?例如在如下代码中的警报中。

$("#checkboxlist").click(function () {
            alert('value of the item that just got (de)selected');
        });

非常感谢!

更新:这是 html 部分:

<span id="checkboxlist">
    <input id="checkboxlist_0" type="checkbox" name="checkboxlist$checkboxlist_0" value="11" />
    <label for="checkboxlist_0">Item 1</label><br />

    <input id="checkboxlist_1" type="checkbox" name="checkboxlist$checkboxlist_1" value="12" />
    <label for="checkboxlist_1">Item 2</label><br />

    <input id="checkboxlist_2" type="checkbox" name="checkboxlist$checkboxlist_2" value="13" />
    <label for="checkboxlist_2">Item 3</label><br />

    <input id="checkboxlist_3" type="checkbox" name="checkboxlist$checkboxlist_3" value="14" />
    <label for="checkboxlist_3">Item 4</label><br />
</span>
4

1 回答 1

3

此代码应该可以工作(属性以选择器结尾):

$('[id$="checkboxlist"] input').click(function () {
            alert($(this).val());
});

asp:CheckBoxList 将呈现为某个元素(在您的情况下应该是span),其中包含类似 IDctl00_contenttop_checkboxlist和输入的元素。上面的代码将在 ID 以 结尾的元素内找到所有输入,checkboxlist并在单击其中一个元素时触发。

但是属性结尾可能会很慢,所以最好做这样的事情:

$("#<%=checkboxlist.ClientID %> input").click(function () {
                alert($(this).val());
});

checkboxlist.ClientID将在客户端返回包装器元素的 ID。

升级版:

根据您的 HTML,看起来不需要 ClientID(因为看起来您正在使用ClientIDMode启用的 .net 4)。在这种情况下,您可以简单地使用:

$("#checkboxlist input").click(function () {
                alert($(this).val());
});

演示

于 2012-12-05T12:38:37.833 回答