限制从CheckboxList中选择的选项数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了限制从CheckboxList中选择的选项数相关的知识,希望对你有一定的参考价值。
我试图只允许用户从具有12个选项的复选框列表中选择5个选项。我添加了此代码,但用户可以根据需要选择。
这是我的完整语法。
为什么这不是我想要的警报?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
var limit = 5;
$(function () {
$('[id*="cbxlTestInputAmt"]').on('change', function (evt) {
if ($('[id*="cbxlTestInputAmt"]:checked').length > limit) {
this.checked = false;
alert('cannot select more than ' + limit);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CheckBoxList ID="cbxlTestInputAmt" runat="server" RepeatLayout="table" RepeatColumns="2" RepeatDirection="vertical"></asp:CheckBoxList>
</div>
</form>
</body>
</html>
我在数据库后面的C#代码中填充了我的复选框列表。我认为这就是JQuery不适合我的原因。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLString1"].ConnectionString))
{
SqlDataAdapter ad = new SqlDataAdapter("Select X FROM OIKJC ORDER BY ID ASC", conn);
ad.Fill(dt);
}
cbxlTestInputAmt.DataSource = dt;
cbxlTestInputAmt.DataTextField = "X";
cbxlTestInputAmt.DataValueField = "X";
cbxlTestInputAmt.DataBind();
}
}
编辑2 这是页面源
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form method="post" action="./StJudes" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/arN4mVK5SbGdvL+R7WrYMRnz8V5l4JL9V3Mni0wMrfoNV8HdxGgfuGLcsQDI0QcQeB6J8U7mUzXSzGMKyLlJ/aalb0tRLilgRH6mlf+ZTGC8f8NBCIb0Bqhs/nU7dyk10ZeZxyc6US362rQdf2I507YnK8EcAXrTQuUir4mMyh+k06tUlLZeA6NHntT45j7vnUsboHm0wCzhuW9B6Kw9QTgoB5XnbsmLTxsAPmvpNCI7ATtIfX6pF1hf/1WkrkN0tYmKA3MX+Uq2N2gXwnZFx73mxAAbpSFcx7P8kIdNlBze3XwgzCHL9qJRujTxxlnbcnwrw00drXudPbiZvKFL7f2Hnfe0xs+k6WOx962kiF0sHyvNhLBC3o4yqfV3tzdcNpCbt/YlUYJP5LkVJ4k7rmr638IMr021fgYGLhRxff70NKwBNKrkUflk/ZpoY8oMLciB3AZPq4x7ob0WAa7l4HGlWEusMCxsiW0i3/VMFLnS/VtmoJIdcRGrbwjbGNq1EvnCyh32oCvgO/kmzlMVCVOtpZhNR+SBpdQW4dIhkBCCKQHReV8YPK0OF13hEHAekgFuXw5SsTok8dGtLUnDXoy1DOxbe3AV6wpdTzuDvQfsgJYEiV1mUn1k35E4pz4+dLNK7RtjM4nId0jnj6Rpfgpke743BNmwr7prkcbMoBz44Rf3K+Ov2+UlMj3mXYWvREGBmAUWAqvRuHu373uZ6JyjHY0lg7Ui+5fGGkyrBezZFHgoSRu/xmPP9em0myqagVQxKZHXOGHsPwBd2+ZHl5hsC/eO21X3SxGJmoc6PO1Grns5X0oSNv3moG/J+7ZfU6LWJobDZ4cJkMa3KjgB5+ymRm2AjoIQwkwCI9SOAe4g0NLMaOdYCJ/VVgfGEgdgTyN/qM9owibjyXNQEtHH/gpMv1bNZ5jHZzc0LOZEG7KltJ4PMdVyAjwpV3wR9Q1Yz6/YBE0rYYM7+cMcMFgqvkmggMZ/EiCSB/NWcpkl4Ljrs9C6xcF6Rh51W56Ddf2C5ZEIhrE3KCOHDWlr3pj9zF7CIyGVIpwtsTTCQfCL7QjlIw5u2vd4HvlfrdYrErv/ezDXrTMErkQnpfaQRpwi4zLOCZKQ9Qd2SYGaKZsDdN6foV7iBPH5TABi2r8SUUHotDlWD8bYbntUAlTVhJ1e5amY7RgzWNVPhlsTLIfFF5vwQAW0Qg9BSUTKOtx1A5dssTY9iUlVa+gJDjfEohvLcO9Qtym8As+OA2tBCJ/2jQyhGgo+prm1S+MVGTVuItm" />
</div>
<div>
<table id="cbxlTestInputAmt">
<tr>
<td><input id="cbxlTestInputAmt_0" type="checkbox" name="cbxlTestInputAmt$0" value="Choice 1" /><label for="cbxlTestInputAmt_0">Choice 1</label></td><td><input id="cbxlTestInputAmt_8" type="checkbox" name="cbxlTestInputAmt$8" value="Choice 5" /><label for="cbxlTestInputAmt_8">Choice 5</label></td>
</tr><tr>
<td><input id="cbxlTestInputAmt_1" type="checkbox" name="cbxlTestInputAmt$1" value="Choice 2" /><label for="cbxlTestInputAmt_1">Choice 2</label></td><td><input id="cbxlTestInputAmt_9" type="checkbox" name="cbxlTestInputAmt$9" value="Choice 6" /><label for="cbxlTestInputAmt_9">Choice 6</label></td>
</tr><tr>
<td><input id="cbxlTestInputAmt_2" type="checkbox" name="cbxlTestInputAmt$2" value="Choice 3" /><label for="cbxlTestInputAmt_2">Choice 3</label></td><td><input id="cbxlTestInputAmt_10" type="checkbox" name="cbxlTestInputAmt$10" value="Choice 7" /><label for="cbxlTestInputAmt_10">Choice 7</label></td>
</tr><tr>
<td><input id="cbxlTestInputAmt_3" type="checkbox" name="cbxlTestInputAmt$3" value="Choice 4" /><label for="cbxlTestInputAmt_3">Choice 4</label></td><td><input id="cbxlTestInputAmt_11" type="checkbox" name="cbxlTestInputAmt$11" value="Choice 8" /><label for="cbxlTestInputAmt_11">Choice 8</label></td>
</tr><tr>
</tr>
</table>
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="EAAE48E8" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="Sy90TVaOKW0SPZaQc4kBfWFelyOefK2WoFykp7mXwf8t1tCQ1rpzVdnpgLuNxUsSq4LLnzDYvh5HpOvi781XrWO2QN3jsMS0nwr+2o8Qq5CSde1phnI9bO5cNFwJLytC54FG6o/Uv4AbjSKIvZ5hsmWRfu0AtPCuFsgeJXK3nkJI++SHHLuvdqc3dkJYCyzFY8ls6ton28qjRu1LfvTN40WIGxqe+XODIS5UEeFpj3eAbjN4vZnO9rAkE3mGOscT50S201BcFZQNRvzJMEDYe2lXadzzxCWP2P5456Q18+P3A9DPlZheRW6yTNdiUM1HUoZXpMjtR0+8nbnDnCBv4TNcjSdUCKz2hOWuuESysZr5u52LKxZFKQKXFpQVwLjm4GiNRSs03ERpdikPXXMH1Wg1j8SrK5eYkZiGO+DMBciiv3nud//ZiRZeeUcn14Mj" />
</div></form>
<script type="text/javascript">
var limit = 5;
$(function () {
$('#form1').on('change', '[id="cbxlTestInputAmt"]', function (evt) {
if ($('[id="cbxlTestInputAmt"]:checked').length > limit) {
this.checked = false;
alert('cannot select more than ' + limit);
}
});
});
</script>
<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
{"appName":"Chrome","requestId":"fc04a78059374a078423b035a01ea2a7"}
</script>
<script type="text/javascript" src="http://localhost:60326/3217fe137445440cbce21c780fe62311/browserLink" async="async"></script>
<!-- End Browser Link -->
</body>
</html>
答案
尽管您发布的服务器端代码指示了带有*=
限定符的属性选择器,但您发布的呈现源代码显示了两个检查相等性的id
选择器:
[id="cbxlTestInputAmt"]
当我将它们更改为:
[id*="cbxlTestInputAmt"]
代码可以正常工作。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form method="post" action="./StJudes" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/arN4mVK5SbGdvL+R7WrYMRnz8V5l4JL9V3Mni0wMrfoNV8HdxGgfuGLcsQDI0QcQeB6J8U7mUzXSzGMKyLlJ/aalb0tRLilgRH6mlf+ZTGC8f8NBCIb0Bqhs/nU7dyk10ZeZxyc6US362rQdf2I507YnK8EcAXrTQuUir4mMyh+k06tUlLZeA6NHntT45j7vnUsboHm0wCzhuW9B6Kw9QTgoB5XnbsmLTxsAPmvpNCI7ATtIfX6pF1hf/1WkrkN0tYmKA3MX+Uq2N2gXwnZFx73mxAAbpSFcx7P8kIdNlBze3XwgzCHL9qJRujTxxlnbcnwrw00drXudPbiZvKFL7f2Hnfe0xs+k6WOx962kiF0sHyvNhLBC3o4yqfV3tzdcNpCbt/YlUYJP5LkVJ4k7rmr638IMr021fgYGLhRxff70NKwBNKrkUflk/ZpoY8oMLciB3AZPq4x7ob0WAa7l4HGlWEusMCxsiW0i3/VMFLnS/VtmoJIdcRGrbwjbGNq1EvnCyh32oCvgO/kmzlMVCVOtpZhNR+SBpdQW4dIhkBCCKQHReV8YPK0OF13hEHAekgFuXw5SsTok8dGtLUnDXoy1DOxbe3AV6wpdTzuDvQfsgJYEiV1mUn1k35E4pz4+dLNK7RtjM4nId0jnj6Rpfgpke743BNmwr7prkcbMoBz44Rf3K+Ov2+UlMj3mXYWvREGBmAUWAqvRuHu373uZ6JyjHY0lg7Ui+5fGGkyrBezZFHgoSRu/xmPP9em0myqagVQxKZHXOGHsPwBd2+ZHl5hsC/eO21X3SxGJmoc6PO1Grns5X0oSNv3moG/J+7ZfU6LWJobDZ4cJkMa3KjgB5+ymRm2AjoIQwkwCI9SOAe4g0NLMaOdYCJ/VVgfGEgdgTyN/qM9owibjyXNQEtHH/gpMv1bNZ5jHZzc0LOZEG7KltJ4PMdVyAjwpV3wR9Q1Yz6/YBE0rYYM7+cMcMFgqvkmggMZ/EiCSB/NWcpkl4Ljrs9C6xcF6Rh51W56Ddf2C5ZEIhrE3KCOHDWlr3pj9zF7CIyGVIpwtsTTCQfCL7QjlIw5u2vd4HvlfrdYrErv/ezDXrTMErkQnpfaQRpwi4zLOCZKQ9Qd2SYGaKZsDdN6foV7iBPH5TABi2r8SUUHotDlWD8bYbntUAlTVhJ1e5amY7RgzWNVPhlsTLIfFF5vwQAW0Qg9BSUTKOtx1A5dssTY9iUlVa+gJDjfEohvLcO9Qtym8As+OA2tBCJ/2jQyhGgo+prm1S+MVGTVuItm" />
</div>
<div>
<table id="cbxlTestInputAmt">
<tr>
<td><input id="cbxlTestInputAmt_0" type="checkbox" name="cbxlTestInputAmt$0" value="Choice 1" /><label for="cbxlTestInputAmt_0">Choice 1</label></td><td><input id="cbxlTestInputAmt_8" type="checkbox" name="cbxlTestInputAmt$8" value="Choice 5" /><label for="cbxlTestInputAmt_8">Choice 5</label></td>
</tr><tr>
<td><input id="cbxlTestInputAmt_1" type="checkbox" name="cbxlTestInputAmt$1" value="Choice 2" /><label for="cbxlTestInputAmt_1">Choice 2</label></td><td><input id="cbxlTestInputAmt_9" type="checkbox" name="cbxlTestInputAmt$9" value="Choice 6" /><label for="cbxlTestInputAmt_9">Choice 6</label></td>
</tr><tr>
<td><input id="cbxlTestInputAmt_2" type="checkbox" name="cbxlTestInputAmt$2" value="Choice 3" /><label for="cbxlTestInputAmt_2">Choice 3</label></td><td><input id="cbxlTestInputAmt_10" type="checkbox" name="cbxlTestInputAmt$10" value="Choice 7" /><label for="cbxlTestInputAmt_10">Choice 7</label></td>
</tr><tr>
<td><input id="cbxlTestInputAmt_3" type="checkbox" name="cbxlTestInputAmt$3" value="Choice 4" /><label for="cbxlTestInputAmt_3">Choice 4</label></td><td><input id="cbxlTestInputAmt_11" type="checkbox" name="cbxlTestInputAmt$11" value="Choice 8" /><label for="cbxlTestInputAmt_11">Choice 8</label></td>
</tr><tr>
</tr>
</table>
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="EAAE48E8" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="Sy90TVaOKW0SPZaQc4kBfWFelyOefK2WoFykp7mXwf8t1tCQ1rpzVdnpgLuNxUsSq4LLnzDYvh5HpOvi781XrWO2QN3jsMS0nwr+2o8Qq5CSde1phnI9bO5cNFwJLytC54FG6o/Uv4AbjSKIvZ5hsmWRfu0AtPCuFsgeJXK3nkJI++SHHLuvdqc3dkJYCyzFY8ls6ton28qjRu1LfvTN40WIGxqe+XODIS5UEeFpj3eAbjN4vZnO9rAkE3mGOscT50S201BcFZQNRvzJMEDYe2lXadzzxCWP2P5456Q18+P3A9DPlZheRW6yTNdiUM1HUoZXpMjtR0+8nbnDnCBv4TNcjSdUCKz2hOWuuESysZr5u52LKxZFKQKXFpQVwLjm4GiNRSs03ERpdikPXXMH1Wg1j8SrK5eYkZiGO+DMBciiv3nud//ZiRZeeUcn14Mj" />
</div></form>
<script type="text/javascript">
var limit = 5;
$(function () {
$('#form1').on('change', '[id*="cbxlTestInputAmt"]', function (evt) {
if ($('[id*="cbxlTestInputAmt"]:checked').length > limit) {
this.checked = false;
alert('cannot select more than ' + limit);
}
});
});
</script>
<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
{"appName":"Chrome","requestId":"fc04a78059374a078423b035a01ea2a7"}
</script>
<script type="text/javascript" src="http://localhost:60326/3217fe137445440cbce21c780fe62311/browserLink" async="async"></script>
<!-- End Browser Link -->
</body>
</html>
以上是关于限制从CheckboxList中选择的选项数的主要内容,如果未能解决你的问题,请参考以下文章
如何取出GridView中的CheckBoxList控件所选择的值。
如何验证用户在 CheckBoxList 中选择了至少一个复选框?