複数の値を選択してデータベースに保存できるマスターページのコンテンツページでチェックボックスリストを取得しています。送信ボタンのクリック時にチェックボックスが最低1つ選択されていることを確認する方法。
質問する
2990 次
2 に答える
2
以下のようにできます。
JavaScript では、コントロールがコンテンツ ページまたはマスター ページのどちらにあるかは問題ではありません
<asp:CheckBoxList ID="chkModuleList"runat="server" />
<asp:CustomValidator runat="server" ID="cvmodulelist"
ClientValidationFunction="ValidateModuleList"
ErrorMessage="Please Select Atleast one Module" />
// javascript to add to your aspx page
function ValidateModuleList(source, args)
{
var chkListModules= document.getElementById ('<%= chkModuleList.ClientID %>');
var chkListinputs = chkListModules.getElementsByTagName("input");
for (var i=0;i<chkListinputs .length;i++)
{
if (chkListinputs [i].checked)
{
args.IsValid = true;
return;
}
}
args.IsValid = false;
}
更新:
または、このアプローチを実行することもできます: Put any css-class
say company
. 以下を通過できます。
使用できる:checked
( http://api.jquery.com/checked-selector/ ) セレクターがあります。
<script>
$(document).ready(function() {
$(".company input").click(function() {
var cnt = $(".company input:checked").length;
if (cnt == 0)
{
// none checked
}
else
{
// any checked
}
});
});
</script>
これらのチェックボックスのコンテナーに ID を追加 (または使用) して、セレクターの速度を最適化することができます。
コントロールのクライアントIDを台無しにするasp.netについては、使用できます
$('<%= MyControl.ClientID %>')
参考文献:
于 2013-04-11T05:39:14.760 に答える
0
GitHub のライブラリであるDado.Validatorsも、これを非常にうまく処理します。
<asp:CheckBoxList ID="cblCheckBoxList" runat="server">
<asp:ListItem Text="Check Box (empty)" Value="" />
<asp:ListItem Text="Check Box 1" Value="1" />
<asp:ListItem Text="Check Box 2" Value="2" />
<asp:ListItem Text="Check Box 3" Value="3" />
</asp:CheckBoxList>
<Dado:RequiredFieldValidator runat="server" ControlToValidate="cblCheckBoxList" ValidationGroup="vlgSubmit" />
例 codebehind.aspx.cs
btnSubmit.Click += (a, b) =>
{
Page.Validate("vlgSubmit");
if (Page.IsValid) {
// Validation Successful
}
};
于 2013-08-16T15:09:53.253 に答える